{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,8 +1,8 @@\n-Zip file size: 15148 bytes, number of entries: 22\n+Zip file size: 15175 bytes, number of entries: 22\n -rw-r--r--  2.0 unx       64 b- defN 20-Apr-01 08:04 META-INF/MANIFEST.MF\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/configcenter/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/\n@@ -11,14 +11,14 @@\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/dubbo/internal/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/\n -rw-r--r--  2.0 unx     6595 b- defN 20-Apr-01 08:04 META-INF/DEPENDENCIES\n -rw-r--r--  2.0 unx    11358 b- defN 20-Apr-01 08:04 META-INF/LICENSE\n -rw-r--r--  2.0 unx      181 b- defN 20-Apr-01 08:04 META-INF/NOTICE\n--rw-r--r--  2.0 unx     2563 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java\n--rw-r--r--  2.0 unx    13610 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java\n--rw-r--r--  2.0 unx     1789 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java\n+-rw-r--r--  2.0 unx     2628 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java\n+-rw-r--r--  2.0 unx    13976 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java\n+-rw-r--r--  2.0 unx     1830 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java\n -rw-r--r--  2.0 unx       82 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\n--rw-r--r--  2.0 unx     2073 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n+-rw-r--r--  2.0 unx     2024 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n -rw-r--r--  2.0 unx       79 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.properties\n-22 files, 38394 bytes uncompressed, 11800 bytes compressed:  69.3%\n+22 files, 38817 bytes uncompressed, 11827 bytes compressed:  69.5%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -299,830 +299,830 @@\n 1967 Extract Zip Spec      14 (20) '2.0'\n 1968 Extract OS            00 (0) 'MS-DOS'\n 1969 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n 196B Compression Method    0008 (8) 'Deflated'\n 196D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1971 CRC                   9FC2FAF4 (2680355572)\n-1975 Compressed Size       000003A4 (932)\n-1979 Uncompressed Size     00000A03 (2563)\n+1971 CRC                   F13A996B (4047149419)\n+1975 Compressed Size       000003AA (938)\n+1979 Uncompressed Size     00000A44 (2628)\n 197D Filename Length       004A (74)\n 197F Extra Length          0000 (0)\n 1981 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x1981: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 19CB PAYLOAD\n \n-1D6F LOCAL HEADER #18      04034B50 (67324752)\n-1D73 Extract Zip Spec      14 (20) '2.0'\n-1D74 Extract OS            00 (0) 'MS-DOS'\n-1D75 General Purpose Flag  0800 (2048)\n+1D75 LOCAL HEADER #18      04034B50 (67324752)\n+1D79 Extract Zip Spec      14 (20) '2.0'\n+1D7A Extract OS            00 (0) 'MS-DOS'\n+1D7B General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-1D77 Compression Method    0008 (8) 'Deflated'\n-1D79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1D7D CRC                   E1F2B0D2 (3790778578)\n-1D81 Compressed Size       00000D4A (3402)\n-1D85 Uncompressed Size     0000352A (13610)\n-1D89 Filename Length       004A (74)\n-1D8B Extra Length          0000 (0)\n-1D8D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D7D Compression Method    0008 (8) 'Deflated'\n+1D7F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1D83 CRC                   2B568850 (727091280)\n+1D87 Compressed Size       00000D5E (3422)\n+1D8B Uncompressed Size     00003698 (13976)\n+1D8F Filename Length       004A (74)\n+1D91 Extra Length          0000 (0)\n+1D93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D8D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DD7 PAYLOAD\n+1DDD PAYLOAD\n \n-2B21 LOCAL HEADER #19      04034B50 (67324752)\n-2B25 Extract Zip Spec      14 (20) '2.0'\n-2B26 Extract OS            00 (0) 'MS-DOS'\n-2B27 General Purpose Flag  0800 (2048)\n+2B3B LOCAL HEADER #19      04034B50 (67324752)\n+2B3F Extract Zip Spec      14 (20) '2.0'\n+2B40 Extract OS            00 (0) 'MS-DOS'\n+2B41 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2B29 Compression Method    0008 (8) 'Deflated'\n-2B2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2B2F CRC                   2422B0CC (606253260)\n-2B33 Compressed Size       00000322 (802)\n-2B37 Uncompressed Size     000006FD (1789)\n-2B3B Filename Length       0051 (81)\n-2B3D Extra Length          0000 (0)\n-2B3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2B43 Compression Method    0008 (8) 'Deflated'\n+2B45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2B49 CRC                   78482BCF (2017995727)\n+2B4D Compressed Size       00000328 (808)\n+2B51 Uncompressed Size     00000726 (1830)\n+2B55 Filename Length       0051 (81)\n+2B57 Extra Length          0000 (0)\n+2B59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2B3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2B90 PAYLOAD\n+2BAA PAYLOAD\n \n-2EB2 LOCAL HEADER #20      04034B50 (67324752)\n-2EB6 Extract Zip Spec      14 (20) '2.0'\n-2EB7 Extract OS            00 (0) 'MS-DOS'\n-2EB8 General Purpose Flag  0800 (2048)\n+2ED2 LOCAL HEADER #20      04034B50 (67324752)\n+2ED6 Extract Zip Spec      14 (20) '2.0'\n+2ED7 Extract OS            00 (0) 'MS-DOS'\n+2ED8 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2EBA Compression Method    0008 (8) 'Deflated'\n-2EBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2EC0 CRC                   BA7FA1B6 (3128926646)\n-2EC4 Compressed Size       00000048 (72)\n-2EC8 Uncompressed Size     00000052 (82)\n-2ECC Filename Length       005F (95)\n-2ECE Extra Length          0000 (0)\n-2ED0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2EDA Compression Method    0008 (8) 'Deflated'\n+2EDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2EE0 CRC                   BA7FA1B6 (3128926646)\n+2EE4 Compressed Size       00000048 (72)\n+2EE8 Uncompressed Size     00000052 (82)\n+2EEC Filename Length       005F (95)\n+2EEE Extra Length          0000 (0)\n+2EF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2ED0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2EF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2F2F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2F4F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-2F77 LOCAL HEADER #21      04034B50 (67324752)\n-2F7B Extract Zip Spec      14 (20) '2.0'\n-2F7C Extract OS            00 (0) 'MS-DOS'\n-2F7D General Purpose Flag  0800 (2048)\n+2F97 LOCAL HEADER #21      04034B50 (67324752)\n+2F9B Extract Zip Spec      14 (20) '2.0'\n+2F9C Extract OS            00 (0) 'MS-DOS'\n+2F9D General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2F7F Compression Method    0008 (8) 'Deflated'\n-2F81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2F85 CRC                   CFD7D535 (3487028533)\n-2F89 Compressed Size       00000363 (867)\n-2F8D Uncompressed Size     00000819 (2073)\n-2F91 Filename Length       0040 (64)\n-2F93 Extra Length          0000 (0)\n-2F95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2F9F Compression Method    0008 (8) 'Deflated'\n+2FA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2FA5 CRC                   F1E099F8 (4058028536)\n+2FA9 Compressed Size       0000035E (862)\n+2FAD Uncompressed Size     000007E8 (2024)\n+2FB1 Filename Length       0040 (64)\n+2FB3 Extra Length          0000 (0)\n+2FB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2FB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2FD5 PAYLOAD\n+2FF5 PAYLOAD\n \n-3338 LOCAL HEADER #22      04034B50 (67324752)\n-333C Extract Zip Spec      14 (20) '2.0'\n-333D Extract OS            00 (0) 'MS-DOS'\n-333E General Purpose Flag  0800 (2048)\n+3353 LOCAL HEADER #22      04034B50 (67324752)\n+3357 Extract Zip Spec      14 (20) '2.0'\n+3358 Extract OS            00 (0) 'MS-DOS'\n+3359 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3340 Compression Method    0008 (8) 'Deflated'\n-3342 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3346 CRC                   9AAEB621 (2595141153)\n-334A Compressed Size       0000004A (74)\n-334E Uncompressed Size     0000004F (79)\n-3352 Filename Length       0047 (71)\n-3354 Extra Length          0000 (0)\n-3356 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+335B Compression Method    0008 (8) 'Deflated'\n+335D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3361 CRC                   9AAEB621 (2595141153)\n+3365 Compressed Size       0000004A (74)\n+3369 Uncompressed Size     0000004F (79)\n+336D Filename Length       0047 (71)\n+336F Extra Length          0000 (0)\n+3371 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3356: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3371: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-339D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+33B8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-33E7 CENTRAL HEADER #1     02014B50 (33639248)\n-33EB Created Zip Spec      14 (20) '2.0'\n-33EC Created OS            03 (3) 'Unix'\n-33ED Extract Zip Spec      14 (20) '2.0'\n-33EE Extract OS            00 (0) 'MS-DOS'\n-33EF General Purpose Flag  0800 (2048)\n+3402 CENTRAL HEADER #1     02014B50 (33639248)\n+3406 Created Zip Spec      14 (20) '2.0'\n+3407 Created OS            03 (3) 'Unix'\n+3408 Extract Zip Spec      14 (20) '2.0'\n+3409 Extract OS            00 (0) 'MS-DOS'\n+340A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-33F1 Compression Method    0008 (8) 'Deflated'\n-33F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-33F7 CRC                   A689EB18 (2794056472)\n-33FB Compressed Size       00000042 (66)\n-33FF Uncompressed Size     00000040 (64)\n-3403 Filename Length       0014 (20)\n-3405 Extra Length          0000 (0)\n-3407 Comment Length        0000 (0)\n-3409 Disk Start            0000 (0)\n-340B Int File Attributes   0000 (0)\n+340C Compression Method    0008 (8) 'Deflated'\n+340E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3412 CRC                   A689EB18 (2794056472)\n+3416 Compressed Size       00000042 (66)\n+341A Uncompressed Size     00000040 (64)\n+341E Filename Length       0014 (20)\n+3420 Extra Length          0000 (0)\n+3422 Comment Length        0000 (0)\n+3424 Disk Start            0000 (0)\n+3426 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-340D Ext File Attributes   81A40000 (2175008768)\n+3428 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3411 Local Header Offset   00000000 (0)\n-3415 Filename              'XXXXXXXXXXXXXXXXXXXX'\n+342C Local Header Offset   00000000 (0)\n+3430 Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3415: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3430: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3429 CENTRAL HEADER #2     02014B50 (33639248)\n-342D Created Zip Spec      14 (20) '2.0'\n-342E Created OS            03 (3) 'Unix'\n-342F Extract Zip Spec      0A (10) '1.0'\n-3430 Extract OS            00 (0) 'MS-DOS'\n-3431 General Purpose Flag  0800 (2048)\n+3444 CENTRAL HEADER #2     02014B50 (33639248)\n+3448 Created Zip Spec      14 (20) '2.0'\n+3449 Created OS            03 (3) 'Unix'\n+344A Extract Zip Spec      0A (10) '1.0'\n+344B Extract OS            00 (0) 'MS-DOS'\n+344C General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-3433 Compression Method    0000 (0) 'Stored'\n-3435 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3439 CRC                   00000000 (0)\n-343D Compressed Size       00000000 (0)\n-3441 Uncompressed Size     00000000 (0)\n-3445 Filename Length       0009 (9)\n-3447 Extra Length          0000 (0)\n-3449 Comment Length        0000 (0)\n-344B Disk Start            0000 (0)\n-344D Int File Attributes   0000 (0)\n+344E Compression Method    0000 (0) 'Stored'\n+3450 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3454 CRC                   00000000 (0)\n+3458 Compressed Size       00000000 (0)\n+345C Uncompressed Size     00000000 (0)\n+3460 Filename Length       0009 (9)\n+3462 Extra Length          0000 (0)\n+3464 Comment Length        0000 (0)\n+3466 Disk Start            0000 (0)\n+3468 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-344F Ext File Attributes   41ED0010 (1106051088)\n+346A Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-3453 Local Header Offset   00000074 (116)\n-3457 Filename              'XXXXXXXXX'\n+346E Local Header Offset   00000074 (116)\n+3472 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x3457: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x3472: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x3457: Directory 'XXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x3472: Directory 'XXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x342F: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n+# WARNING: Offset 0x344A: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n #\n \n-3460 CENTRAL HEADER #3     02014B50 (33639248)\n-3464 Created Zip Spec      14 (20) '2.0'\n-3465 Created OS            03 (3) 'Unix'\n-3466 Extract Zip Spec      0A (10) '1.0'\n-3467 Extract OS            00 (0) 'MS-DOS'\n-3468 General Purpose Flag  0800 (2048)\n+347B CENTRAL HEADER #3     02014B50 (33639248)\n+347F Created Zip Spec      14 (20) '2.0'\n+3480 Created OS            03 (3) 'Unix'\n+3481 Extract Zip Spec      0A (10) '1.0'\n+3482 Extract OS            00 (0) 'MS-DOS'\n+3483 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-346A Compression Method    0000 (0) 'Stored'\n-346C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3470 CRC                   00000000 (0)\n-3474 Compressed Size       00000000 (0)\n-3478 Uncompressed Size     00000000 (0)\n-347C Filename Length       0004 (4)\n-347E Extra Length          0000 (0)\n-3480 Comment Length        0000 (0)\n-3482 Disk Start            0000 (0)\n-3484 Int File Attributes   0000 (0)\n+3485 Compression Method    0000 (0) 'Stored'\n+3487 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+348B CRC                   00000000 (0)\n+348F Compressed Size       00000000 (0)\n+3493 Uncompressed Size     00000000 (0)\n+3497 Filename Length       0004 (4)\n+3499 Extra Length          0000 (0)\n+349B Comment Length        0000 (0)\n+349D Disk Start            0000 (0)\n+349F Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3486 Ext File Attributes   41ED0010 (1106051088)\n+34A1 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-348A Local Header Offset   0000009B (155)\n-348E Filename              'XXXX'\n+34A5 Local Header Offset   0000009B (155)\n+34A9 Filename              'XXXX'\n #\n-# WARNING: Offset 0x348E: Filename 'XXXX'\n+# WARNING: Offset 0x34A9: Filename 'XXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x348E: Directory 'XXXX' must end in a '/'\n+# ERROR: Offset 0x34A9: Directory 'XXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x3466: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n+# WARNING: Offset 0x3481: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n #\n \n-3492 CENTRAL HEADER #4     02014B50 (33639248)\n-3496 Created Zip Spec      14 (20) '2.0'\n-3497 Created OS            03 (3) 'Unix'\n-3498 Extract Zip Spec      0A (10) '1.0'\n-3499 Extract OS            00 (0) 'MS-DOS'\n-349A General Purpose Flag  0800 (2048)\n+34AD CENTRAL HEADER #4     02014B50 (33639248)\n+34B1 Created Zip Spec      14 (20) '2.0'\n+34B2 Created OS            03 (3) 'Unix'\n+34B3 Extract Zip Spec      0A (10) '1.0'\n+34B4 Extract OS            00 (0) 'MS-DOS'\n+34B5 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-349C Compression Method    0000 (0) 'Stored'\n-349E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-34A2 CRC                   00000000 (0)\n-34A6 Compressed Size       00000000 (0)\n-34AA Uncompressed Size     00000000 (0)\n-34AE Filename Length       000B (11)\n-34B0 Extra Length          0000 (0)\n-34B2 Comment Length        0000 (0)\n-34B4 Disk Start            0000 (0)\n-34B6 Int File Attributes   0000 (0)\n+34B7 Compression Method    0000 (0) 'Stored'\n+34B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+34BD CRC                   00000000 (0)\n+34C1 Compressed Size       00000000 (0)\n+34C5 Uncompressed Size     00000000 (0)\n+34C9 Filename Length       000B (11)\n+34CB Extra Length          0000 (0)\n+34CD Comment Length        0000 (0)\n+34CF Disk Start            0000 (0)\n+34D1 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-34B8 Ext File Attributes   41ED0010 (1106051088)\n+34D3 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-34BC Local Header Offset   000000BD (189)\n-34C0 Filename              'XXXXXXXXXXX'\n+34D7 Local Header Offset   000000BD (189)\n+34DB Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x34C0: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x34DB: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x34C0: Directory 'XXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x34DB: Directory 'XXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x3498: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n+# WARNING: Offset 0x34B3: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n #\n \n-34CB CENTRAL HEADER #5     02014B50 (33639248)\n-34CF Created Zip Spec      14 (20) '2.0'\n-34D0 Created OS            03 (3) 'Unix'\n-34D1 Extract Zip Spec      0A (10) '1.0'\n-34D2 Extract OS            00 (0) 'MS-DOS'\n-34D3 General Purpose Flag  0800 (2048)\n+34E6 CENTRAL HEADER #5     02014B50 (33639248)\n+34EA Created Zip Spec      14 (20) '2.0'\n+34EB Created OS            03 (3) 'Unix'\n+34EC Extract Zip Spec      0A (10) '1.0'\n+34ED Extract OS            00 (0) 'MS-DOS'\n+34EE General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-34D5 Compression Method    0000 (0) 'Stored'\n-34D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-34DB CRC                   00000000 (0)\n-34DF Compressed Size       00000000 (0)\n-34E3 Uncompressed Size     00000000 (0)\n-34E7 Filename Length       0011 (17)\n-34E9 Extra Length          0000 (0)\n-34EB Comment Length        0000 (0)\n-34ED Disk Start            0000 (0)\n-34EF Int File Attributes   0000 (0)\n+34F0 Compression Method    0000 (0) 'Stored'\n+34F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+34F6 CRC                   00000000 (0)\n+34FA Compressed Size       00000000 (0)\n+34FE Uncompressed Size     00000000 (0)\n+3502 Filename Length       0011 (17)\n+3504 Extra Length          0000 (0)\n+3506 Comment Length        0000 (0)\n+3508 Disk Start            0000 (0)\n+350A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-34F1 Ext File Attributes   41ED0010 (1106051088)\n+350C Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-34F5 Local Header Offset   000000E6 (230)\n-34F9 Filename              'XXXXXXXXXXXXXXXXX'\n+3510 Local Header Offset   000000E6 (230)\n+3514 Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x34F9: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3514: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x34F9: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x3514: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x34D1: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x34EC: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n #\n \n-350A CENTRAL HEADER #6     02014B50 (33639248)\n-350E Created Zip Spec      14 (20) '2.0'\n-350F Created OS            03 (3) 'Unix'\n-3510 Extract Zip Spec      0A (10) '1.0'\n-3511 Extract OS            00 (0) 'MS-DOS'\n-3512 General Purpose Flag  0800 (2048)\n+3525 CENTRAL HEADER #6     02014B50 (33639248)\n+3529 Created Zip Spec      14 (20) '2.0'\n+352A Created OS            03 (3) 'Unix'\n+352B Extract Zip Spec      0A (10) '1.0'\n+352C Extract OS            00 (0) 'MS-DOS'\n+352D General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-3514 Compression Method    0000 (0) 'Stored'\n-3516 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-351A CRC                   00000000 (0)\n-351E Compressed Size       00000000 (0)\n-3522 Uncompressed Size     00000000 (0)\n-3526 Filename Length       001E (30)\n-3528 Extra Length          0000 (0)\n-352A Comment Length        0000 (0)\n-352C Disk Start            0000 (0)\n-352E Int File Attributes   0000 (0)\n+352F Compression Method    0000 (0) 'Stored'\n+3531 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3535 CRC                   00000000 (0)\n+3539 Compressed Size       00000000 (0)\n+353D Uncompressed Size     00000000 (0)\n+3541 Filename Length       001E (30)\n+3543 Extra Length          0000 (0)\n+3545 Comment Length        0000 (0)\n+3547 Disk Start            0000 (0)\n+3549 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3530 Ext File Attributes   41ED0010 (1106051088)\n+354B Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-3534 Local Header Offset   00000115 (277)\n-3538 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+354F Local Header Offset   00000115 (277)\n+3553 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3538: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3553: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x3538: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x3553: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x3510: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x352B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-3556 CENTRAL HEADER #7     02014B50 (33639248)\n-355A Created Zip Spec      14 (20) '2.0'\n-355B Created OS            03 (3) 'Unix'\n-355C Extract Zip Spec      0A (10) '1.0'\n-355D Extract OS            00 (0) 'MS-DOS'\n-355E General Purpose Flag  0800 (2048)\n+3571 CENTRAL HEADER #7     02014B50 (33639248)\n+3575 Created Zip Spec      14 (20) '2.0'\n+3576 Created OS            03 (3) 'Unix'\n+3577 Extract Zip Spec      0A (10) '1.0'\n+3578 Extract OS            00 (0) 'MS-DOS'\n+3579 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-3560 Compression Method    0000 (0) 'Stored'\n-3562 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3566 CRC                   00000000 (0)\n-356A Compressed Size       00000000 (0)\n-356E Uncompressed Size     00000000 (0)\n-3572 Filename Length       0026 (38)\n-3574 Extra Length          0000 (0)\n-3576 Comment Length        0000 (0)\n-3578 Disk Start            0000 (0)\n-357A Int File Attributes   0000 (0)\n+357B Compression Method    0000 (0) 'Stored'\n+357D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3581 CRC                   00000000 (0)\n+3585 Compressed Size       00000000 (0)\n+3589 Uncompressed Size     00000000 (0)\n+358D Filename Length       0026 (38)\n+358F Extra Length          0000 (0)\n+3591 Comment Length        0000 (0)\n+3593 Disk Start            0000 (0)\n+3595 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-357C Ext File Attributes   41ED0010 (1106051088)\n+3597 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-3580 Local Header Offset   00000151 (337)\n-3584 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+359B Local Header Offset   00000151 (337)\n+359F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3584: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x359F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x3584: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x359F: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x355C: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3577: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-35AA CENTRAL HEADER #8     02014B50 (33639248)\n-35AE Created Zip Spec      14 (20) '2.0'\n-35AF Created OS            03 (3) 'Unix'\n-35B0 Extract Zip Spec      0A (10) '1.0'\n-35B1 Extract OS            00 (0) 'MS-DOS'\n-35B2 General Purpose Flag  0800 (2048)\n+35C5 CENTRAL HEADER #8     02014B50 (33639248)\n+35C9 Created Zip Spec      14 (20) '2.0'\n+35CA Created OS            03 (3) 'Unix'\n+35CB Extract Zip Spec      0A (10) '1.0'\n+35CC Extract OS            00 (0) 'MS-DOS'\n+35CD General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-35B4 Compression Method    0000 (0) 'Stored'\n-35B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-35BA CRC                   00000000 (0)\n-35BE Compressed Size       00000000 (0)\n-35C2 Uncompressed Size     00000000 (0)\n-35C6 Filename Length       002C (44)\n-35C8 Extra Length          0000 (0)\n-35CA Comment Length        0000 (0)\n-35CC Disk Start            0000 (0)\n-35CE Int File Attributes   0000 (0)\n+35CF Compression Method    0000 (0) 'Stored'\n+35D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+35D5 CRC                   00000000 (0)\n+35D9 Compressed Size       00000000 (0)\n+35DD Uncompressed Size     00000000 (0)\n+35E1 Filename Length       002C (44)\n+35E3 Extra Length          0000 (0)\n+35E5 Comment Length        0000 (0)\n+35E7 Disk Start            0000 (0)\n+35E9 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-35D0 Ext File Attributes   41ED0010 (1106051088)\n+35EB Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-35D4 Local Header Offset   00000195 (405)\n-35D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+35EF Local Header Offset   00000195 (405)\n+35F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x35D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x35F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x35D8: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x35F3: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x35B0: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x35CB: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-3604 CENTRAL HEADER #9     02014B50 (33639248)\n-3608 Created Zip Spec      14 (20) '2.0'\n-3609 Created OS            03 (3) 'Unix'\n-360A Extract Zip Spec      0A (10) '1.0'\n-360B Extract OS            00 (0) 'MS-DOS'\n-360C General Purpose Flag  0800 (2048)\n+361F CENTRAL HEADER #9     02014B50 (33639248)\n+3623 Created Zip Spec      14 (20) '2.0'\n+3624 Created OS            03 (3) 'Unix'\n+3625 Extract Zip Spec      0A (10) '1.0'\n+3626 Extract OS            00 (0) 'MS-DOS'\n+3627 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-360E Compression Method    0000 (0) 'Stored'\n-3610 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3614 CRC                   00000000 (0)\n-3618 Compressed Size       00000000 (0)\n-361C Uncompressed Size     00000000 (0)\n-3620 Filename Length       000F (15)\n-3622 Extra Length          0000 (0)\n-3624 Comment Length        0000 (0)\n-3626 Disk Start            0000 (0)\n-3628 Int File Attributes   0000 (0)\n+3629 Compression Method    0000 (0) 'Stored'\n+362B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+362F CRC                   00000000 (0)\n+3633 Compressed Size       00000000 (0)\n+3637 Uncompressed Size     00000000 (0)\n+363B Filename Length       000F (15)\n+363D Extra Length          0000 (0)\n+363F Comment Length        0000 (0)\n+3641 Disk Start            0000 (0)\n+3643 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-362A Ext File Attributes   41ED0010 (1106051088)\n+3645 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-362E Local Header Offset   000001DF (479)\n-3632 Filename              'XXXXXXXXXXXXXXX'\n+3649 Local Header Offset   000001DF (479)\n+364D Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3632: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x364D: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x3632: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x364D: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x360A: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3625: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-3641 CENTRAL HEADER #10    02014B50 (33639248)\n-3645 Created Zip Spec      14 (20) '2.0'\n-3646 Created OS            03 (3) 'Unix'\n-3647 Extract Zip Spec      0A (10) '1.0'\n-3648 Extract OS            00 (0) 'MS-DOS'\n-3649 General Purpose Flag  0800 (2048)\n+365C CENTRAL HEADER #10    02014B50 (33639248)\n+3660 Created Zip Spec      14 (20) '2.0'\n+3661 Created OS            03 (3) 'Unix'\n+3662 Extract Zip Spec      0A (10) '1.0'\n+3663 Extract OS            00 (0) 'MS-DOS'\n+3664 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-364B Compression Method    0000 (0) 'Stored'\n-364D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3651 CRC                   00000000 (0)\n-3655 Compressed Size       00000000 (0)\n-3659 Uncompressed Size     00000000 (0)\n-365D Filename Length       0018 (24)\n-365F Extra Length          0000 (0)\n-3661 Comment Length        0000 (0)\n-3663 Disk Start            0000 (0)\n-3665 Int File Attributes   0000 (0)\n+3666 Compression Method    0000 (0) 'Stored'\n+3668 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+366C CRC                   00000000 (0)\n+3670 Compressed Size       00000000 (0)\n+3674 Uncompressed Size     00000000 (0)\n+3678 Filename Length       0018 (24)\n+367A Extra Length          0000 (0)\n+367C Comment Length        0000 (0)\n+367E Disk Start            0000 (0)\n+3680 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3667 Ext File Attributes   41ED0010 (1106051088)\n+3682 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-366B Local Header Offset   0000020C (524)\n-366F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+3686 Local Header Offset   0000020C (524)\n+368A Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x366F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x368A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x366F: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x368A: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x3647: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3662: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-3687 CENTRAL HEADER #11    02014B50 (33639248)\n-368B Created Zip Spec      14 (20) '2.0'\n-368C Created OS            03 (3) 'Unix'\n-368D Extract Zip Spec      0A (10) '1.0'\n-368E Extract OS            00 (0) 'MS-DOS'\n-368F General Purpose Flag  0800 (2048)\n+36A2 CENTRAL HEADER #11    02014B50 (33639248)\n+36A6 Created Zip Spec      14 (20) '2.0'\n+36A7 Created OS            03 (3) 'Unix'\n+36A8 Extract Zip Spec      0A (10) '1.0'\n+36A9 Extract OS            00 (0) 'MS-DOS'\n+36AA General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-3691 Compression Method    0000 (0) 'Stored'\n-3693 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3697 CRC                   00000000 (0)\n-369B Compressed Size       00000000 (0)\n-369F Uncompressed Size     00000000 (0)\n-36A3 Filename Length       000F (15)\n-36A5 Extra Length          0000 (0)\n-36A7 Comment Length        0000 (0)\n-36A9 Disk Start            0000 (0)\n-36AB Int File Attributes   0000 (0)\n+36AC Compression Method    0000 (0) 'Stored'\n+36AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+36B2 CRC                   00000000 (0)\n+36B6 Compressed Size       00000000 (0)\n+36BA Uncompressed Size     00000000 (0)\n+36BE Filename Length       000F (15)\n+36C0 Extra Length          0000 (0)\n+36C2 Comment Length        0000 (0)\n+36C4 Disk Start            0000 (0)\n+36C6 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-36AD Ext File Attributes   41ED0010 (1106051088)\n+36C8 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-36B1 Local Header Offset   00000242 (578)\n-36B5 Filename              'XXXXXXXXXXXXXXX'\n+36CC Local Header Offset   00000242 (578)\n+36D0 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x36B5: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x36D0: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x36B5: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x36D0: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x368D: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x36A8: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-36C4 CENTRAL HEADER #12    02014B50 (33639248)\n-36C8 Created Zip Spec      14 (20) '2.0'\n-36C9 Created OS            03 (3) 'Unix'\n-36CA Extract Zip Spec      0A (10) '1.0'\n-36CB Extract OS            00 (0) 'MS-DOS'\n-36CC General Purpose Flag  0800 (2048)\n+36DF CENTRAL HEADER #12    02014B50 (33639248)\n+36E3 Created Zip Spec      14 (20) '2.0'\n+36E4 Created OS            03 (3) 'Unix'\n+36E5 Extract Zip Spec      0A (10) '1.0'\n+36E6 Extract OS            00 (0) 'MS-DOS'\n+36E7 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-36CE Compression Method    0000 (0) 'Stored'\n-36D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-36D4 CRC                   00000000 (0)\n-36D8 Compressed Size       00000000 (0)\n-36DC Uncompressed Size     00000000 (0)\n-36E0 Filename Length       0020 (32)\n-36E2 Extra Length          0000 (0)\n-36E4 Comment Length        0000 (0)\n-36E6 Disk Start            0000 (0)\n-36E8 Int File Attributes   0000 (0)\n+36E9 Compression Method    0000 (0) 'Stored'\n+36EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+36EF CRC                   00000000 (0)\n+36F3 Compressed Size       00000000 (0)\n+36F7 Uncompressed Size     00000000 (0)\n+36FB Filename Length       0020 (32)\n+36FD Extra Length          0000 (0)\n+36FF Comment Length        0000 (0)\n+3701 Disk Start            0000 (0)\n+3703 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-36EA Ext File Attributes   41ED0010 (1106051088)\n+3705 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-36EE Local Header Offset   0000026F (623)\n-36F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3709 Local Header Offset   0000026F (623)\n+370D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x36F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x370D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x36F2: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x370D: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x36CA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x36E5: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-3712 CENTRAL HEADER #13    02014B50 (33639248)\n-3716 Created Zip Spec      14 (20) '2.0'\n-3717 Created OS            03 (3) 'Unix'\n-3718 Extract Zip Spec      0A (10) '1.0'\n-3719 Extract OS            00 (0) 'MS-DOS'\n-371A General Purpose Flag  0800 (2048)\n+372D CENTRAL HEADER #13    02014B50 (33639248)\n+3731 Created Zip Spec      14 (20) '2.0'\n+3732 Created OS            03 (3) 'Unix'\n+3733 Extract Zip Spec      0A (10) '1.0'\n+3734 Extract OS            00 (0) 'MS-DOS'\n+3735 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-371C Compression Method    0000 (0) 'Stored'\n-371E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3722 CRC                   00000000 (0)\n-3726 Compressed Size       00000000 (0)\n-372A Uncompressed Size     00000000 (0)\n-372E Filename Length       0039 (57)\n-3730 Extra Length          0000 (0)\n-3732 Comment Length        0000 (0)\n-3734 Disk Start            0000 (0)\n-3736 Int File Attributes   0000 (0)\n+3737 Compression Method    0000 (0) 'Stored'\n+3739 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+373D CRC                   00000000 (0)\n+3741 Compressed Size       00000000 (0)\n+3745 Uncompressed Size     00000000 (0)\n+3749 Filename Length       0039 (57)\n+374B Extra Length          0000 (0)\n+374D Comment Length        0000 (0)\n+374F Disk Start            0000 (0)\n+3751 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3738 Ext File Attributes   41ED0010 (1106051088)\n+3753 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-373C Local Header Offset   000002AD (685)\n-3740 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3757 Local Header Offset   000002AD (685)\n+375B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3740: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x375B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x3740: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x375B: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x3718: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3733: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-3779 CENTRAL HEADER #14    02014B50 (33639248)\n-377D Created Zip Spec      14 (20) '2.0'\n-377E Created OS            03 (3) 'Unix'\n-377F Extract Zip Spec      14 (20) '2.0'\n-3780 Extract OS            00 (0) 'MS-DOS'\n-3781 General Purpose Flag  0800 (2048)\n+3794 CENTRAL HEADER #14    02014B50 (33639248)\n+3798 Created Zip Spec      14 (20) '2.0'\n+3799 Created OS            03 (3) 'Unix'\n+379A Extract Zip Spec      14 (20) '2.0'\n+379B Extract OS            00 (0) 'MS-DOS'\n+379C General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3783 Compression Method    0008 (8) 'Deflated'\n-3785 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3789 CRC                   D188DF1F (3515408159)\n-378D Compressed Size       000005E1 (1505)\n-3791 Uncompressed Size     000019C3 (6595)\n-3795 Filename Length       0015 (21)\n-3797 Extra Length          0000 (0)\n-3799 Comment Length        0000 (0)\n-379B Disk Start            0000 (0)\n-379D Int File Attributes   0000 (0)\n+379E Compression Method    0008 (8) 'Deflated'\n+37A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+37A4 CRC                   D188DF1F (3515408159)\n+37A8 Compressed Size       000005E1 (1505)\n+37AC Uncompressed Size     000019C3 (6595)\n+37B0 Filename Length       0015 (21)\n+37B2 Extra Length          0000 (0)\n+37B4 Comment Length        0000 (0)\n+37B6 Disk Start            0000 (0)\n+37B8 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-379F Ext File Attributes   81A40000 (2175008768)\n+37BA Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-37A3 Local Header Offset   00000304 (772)\n-37A7 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+37BE Local Header Offset   00000304 (772)\n+37C2 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x37A7: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x37C2: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-37BC CENTRAL HEADER #15    02014B50 (33639248)\n-37C0 Created Zip Spec      14 (20) '2.0'\n-37C1 Created OS            03 (3) 'Unix'\n-37C2 Extract Zip Spec      14 (20) '2.0'\n-37C3 Extract OS            00 (0) 'MS-DOS'\n-37C4 General Purpose Flag  0800 (2048)\n+37D7 CENTRAL HEADER #15    02014B50 (33639248)\n+37DB Created Zip Spec      14 (20) '2.0'\n+37DC Created OS            03 (3) 'Unix'\n+37DD Extract Zip Spec      14 (20) '2.0'\n+37DE Extract OS            00 (0) 'MS-DOS'\n+37DF General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-37C6 Compression Method    0008 (8) 'Deflated'\n-37C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-37CC CRC                   86E2B4B4 (2263004340)\n-37D0 Compressed Size       00000F6D (3949)\n-37D4 Uncompressed Size     00002C5E (11358)\n-37D8 Filename Length       0010 (16)\n-37DA Extra Length          0000 (0)\n-37DC Comment Length        0000 (0)\n-37DE Disk Start            0000 (0)\n-37E0 Int File Attributes   0000 (0)\n+37E1 Compression Method    0008 (8) 'Deflated'\n+37E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+37E7 CRC                   86E2B4B4 (2263004340)\n+37EB Compressed Size       00000F6D (3949)\n+37EF Uncompressed Size     00002C5E (11358)\n+37F3 Filename Length       0010 (16)\n+37F5 Extra Length          0000 (0)\n+37F7 Comment Length        0000 (0)\n+37F9 Disk Start            0000 (0)\n+37FB Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-37E2 Ext File Attributes   81A40000 (2175008768)\n+37FD Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-37E6 Local Header Offset   00000918 (2328)\n-37EA Filename              'XXXXXXXXXXXXXXXX'\n+3801 Local Header Offset   00000918 (2328)\n+3805 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x37EA: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3805: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-37FA CENTRAL HEADER #16    02014B50 (33639248)\n-37FE Created Zip Spec      14 (20) '2.0'\n-37FF Created OS            03 (3) 'Unix'\n-3800 Extract Zip Spec      14 (20) '2.0'\n-3801 Extract OS            00 (0) 'MS-DOS'\n-3802 General Purpose Flag  0800 (2048)\n+3815 CENTRAL HEADER #16    02014B50 (33639248)\n+3819 Created Zip Spec      14 (20) '2.0'\n+381A Created OS            03 (3) 'Unix'\n+381B Extract Zip Spec      14 (20) '2.0'\n+381C Extract OS            00 (0) 'MS-DOS'\n+381D General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3804 Compression Method    0008 (8) 'Deflated'\n-3806 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-380A CRC                   5C9F96CE (1553962702)\n-380E Compressed Size       00000083 (131)\n-3812 Uncompressed Size     000000B5 (181)\n-3816 Filename Length       000F (15)\n-3818 Extra Length          0000 (0)\n-381A Comment Length        0000 (0)\n-381C Disk Start            0000 (0)\n-381E Int File Attributes   0000 (0)\n+381F Compression Method    0008 (8) 'Deflated'\n+3821 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3825 CRC                   5C9F96CE (1553962702)\n+3829 Compressed Size       00000083 (131)\n+382D Uncompressed Size     000000B5 (181)\n+3831 Filename Length       000F (15)\n+3833 Extra Length          0000 (0)\n+3835 Comment Length        0000 (0)\n+3837 Disk Start            0000 (0)\n+3839 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3820 Ext File Attributes   81A40000 (2175008768)\n+383B Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3824 Local Header Offset   000018B3 (6323)\n-3828 Filename              'XXXXXXXXXXXXXXX'\n+383F Local Header Offset   000018B3 (6323)\n+3843 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3828: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3843: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3837 CENTRAL HEADER #17    02014B50 (33639248)\n-383B Created Zip Spec      14 (20) '2.0'\n-383C Created OS            03 (3) 'Unix'\n-383D Extract Zip Spec      14 (20) '2.0'\n-383E Extract OS            00 (0) 'MS-DOS'\n-383F General Purpose Flag  0800 (2048)\n+3852 CENTRAL HEADER #17    02014B50 (33639248)\n+3856 Created Zip Spec      14 (20) '2.0'\n+3857 Created OS            03 (3) 'Unix'\n+3858 Extract Zip Spec      14 (20) '2.0'\n+3859 Extract OS            00 (0) 'MS-DOS'\n+385A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3841 Compression Method    0008 (8) 'Deflated'\n-3843 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3847 CRC                   9FC2FAF4 (2680355572)\n-384B Compressed Size       000003A4 (932)\n-384F Uncompressed Size     00000A03 (2563)\n-3853 Filename Length       004A (74)\n-3855 Extra Length          0000 (0)\n-3857 Comment Length        0000 (0)\n-3859 Disk Start            0000 (0)\n-385B Int File Attributes   0000 (0)\n+385C Compression Method    0008 (8) 'Deflated'\n+385E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3862 CRC                   F13A996B (4047149419)\n+3866 Compressed Size       000003AA (938)\n+386A Uncompressed Size     00000A44 (2628)\n+386E Filename Length       004A (74)\n+3870 Extra Length          0000 (0)\n+3872 Comment Length        0000 (0)\n+3874 Disk Start            0000 (0)\n+3876 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-385D Ext File Attributes   81A40000 (2175008768)\n+3878 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3861 Local Header Offset   00001963 (6499)\n-3865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+387C Local Header Offset   00001963 (6499)\n+3880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-38AF CENTRAL HEADER #18    02014B50 (33639248)\n-38B3 Created Zip Spec      14 (20) '2.0'\n-38B4 Created OS            03 (3) 'Unix'\n-38B5 Extract Zip Spec      14 (20) '2.0'\n-38B6 Extract OS            00 (0) 'MS-DOS'\n-38B7 General Purpose Flag  0800 (2048)\n+38CA CENTRAL HEADER #18    02014B50 (33639248)\n+38CE Created Zip Spec      14 (20) '2.0'\n+38CF Created OS            03 (3) 'Unix'\n+38D0 Extract Zip Spec      14 (20) '2.0'\n+38D1 Extract OS            00 (0) 'MS-DOS'\n+38D2 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-38B9 Compression Method    0008 (8) 'Deflated'\n-38BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-38BF CRC                   E1F2B0D2 (3790778578)\n-38C3 Compressed Size       00000D4A (3402)\n-38C7 Uncompressed Size     0000352A (13610)\n-38CB Filename Length       004A (74)\n-38CD Extra Length          0000 (0)\n-38CF Comment Length        0000 (0)\n-38D1 Disk Start            0000 (0)\n-38D3 Int File Attributes   0000 (0)\n+38D4 Compression Method    0008 (8) 'Deflated'\n+38D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+38DA CRC                   2B568850 (727091280)\n+38DE Compressed Size       00000D5E (3422)\n+38E2 Uncompressed Size     00003698 (13976)\n+38E6 Filename Length       004A (74)\n+38E8 Extra Length          0000 (0)\n+38EA Comment Length        0000 (0)\n+38EC Disk Start            0000 (0)\n+38EE Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-38D5 Ext File Attributes   81A40000 (2175008768)\n+38F0 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-38D9 Local Header Offset   00001D6F (7535)\n-38DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+38F4 Local Header Offset   00001D75 (7541)\n+38F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x38DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3927 CENTRAL HEADER #19    02014B50 (33639248)\n-392B Created Zip Spec      14 (20) '2.0'\n-392C Created OS            03 (3) 'Unix'\n-392D Extract Zip Spec      14 (20) '2.0'\n-392E Extract OS            00 (0) 'MS-DOS'\n-392F General Purpose Flag  0800 (2048)\n+3942 CENTRAL HEADER #19    02014B50 (33639248)\n+3946 Created Zip Spec      14 (20) '2.0'\n+3947 Created OS            03 (3) 'Unix'\n+3948 Extract Zip Spec      14 (20) '2.0'\n+3949 Extract OS            00 (0) 'MS-DOS'\n+394A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3931 Compression Method    0008 (8) 'Deflated'\n-3933 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3937 CRC                   2422B0CC (606253260)\n-393B Compressed Size       00000322 (802)\n-393F Uncompressed Size     000006FD (1789)\n-3943 Filename Length       0051 (81)\n-3945 Extra Length          0000 (0)\n-3947 Comment Length        0000 (0)\n-3949 Disk Start            0000 (0)\n-394B Int File Attributes   0000 (0)\n+394C Compression Method    0008 (8) 'Deflated'\n+394E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3952 CRC                   78482BCF (2017995727)\n+3956 Compressed Size       00000328 (808)\n+395A Uncompressed Size     00000726 (1830)\n+395E Filename Length       0051 (81)\n+3960 Extra Length          0000 (0)\n+3962 Comment Length        0000 (0)\n+3964 Disk Start            0000 (0)\n+3966 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-394D Ext File Attributes   81A40000 (2175008768)\n+3968 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3951 Local Header Offset   00002B21 (11041)\n-3955 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+396C Local Header Offset   00002B3B (11067)\n+3970 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3955: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3970: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-39A6 CENTRAL HEADER #20    02014B50 (33639248)\n-39AA Created Zip Spec      14 (20) '2.0'\n-39AB Created OS            03 (3) 'Unix'\n-39AC Extract Zip Spec      14 (20) '2.0'\n-39AD Extract OS            00 (0) 'MS-DOS'\n-39AE General Purpose Flag  0800 (2048)\n+39C1 CENTRAL HEADER #20    02014B50 (33639248)\n+39C5 Created Zip Spec      14 (20) '2.0'\n+39C6 Created OS            03 (3) 'Unix'\n+39C7 Extract Zip Spec      14 (20) '2.0'\n+39C8 Extract OS            00 (0) 'MS-DOS'\n+39C9 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-39B0 Compression Method    0008 (8) 'Deflated'\n-39B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-39B6 CRC                   BA7FA1B6 (3128926646)\n-39BA Compressed Size       00000048 (72)\n-39BE Uncompressed Size     00000052 (82)\n-39C2 Filename Length       005F (95)\n-39C4 Extra Length          0000 (0)\n-39C6 Comment Length        0000 (0)\n-39C8 Disk Start            0000 (0)\n-39CA Int File Attributes   0000 (0)\n+39CB Compression Method    0008 (8) 'Deflated'\n+39CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+39D1 CRC                   BA7FA1B6 (3128926646)\n+39D5 Compressed Size       00000048 (72)\n+39D9 Uncompressed Size     00000052 (82)\n+39DD Filename Length       005F (95)\n+39DF Extra Length          0000 (0)\n+39E1 Comment Length        0000 (0)\n+39E3 Disk Start            0000 (0)\n+39E5 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-39CC Ext File Attributes   81A40000 (2175008768)\n+39E7 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-39D0 Local Header Offset   00002EB2 (11954)\n-39D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+39EB Local Header Offset   00002ED2 (11986)\n+39EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x39D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x39EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3A33 CENTRAL HEADER #21    02014B50 (33639248)\n-3A37 Created Zip Spec      14 (20) '2.0'\n-3A38 Created OS            03 (3) 'Unix'\n-3A39 Extract Zip Spec      14 (20) '2.0'\n-3A3A Extract OS            00 (0) 'MS-DOS'\n-3A3B General Purpose Flag  0800 (2048)\n+3A4E CENTRAL HEADER #21    02014B50 (33639248)\n+3A52 Created Zip Spec      14 (20) '2.0'\n+3A53 Created OS            03 (3) 'Unix'\n+3A54 Extract Zip Spec      14 (20) '2.0'\n+3A55 Extract OS            00 (0) 'MS-DOS'\n+3A56 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3A3D Compression Method    0008 (8) 'Deflated'\n-3A3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3A43 CRC                   CFD7D535 (3487028533)\n-3A47 Compressed Size       00000363 (867)\n-3A4B Uncompressed Size     00000819 (2073)\n-3A4F Filename Length       0040 (64)\n-3A51 Extra Length          0000 (0)\n-3A53 Comment Length        0000 (0)\n-3A55 Disk Start            0000 (0)\n-3A57 Int File Attributes   0000 (0)\n+3A58 Compression Method    0008 (8) 'Deflated'\n+3A5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3A5E CRC                   F1E099F8 (4058028536)\n+3A62 Compressed Size       0000035E (862)\n+3A66 Uncompressed Size     000007E8 (2024)\n+3A6A Filename Length       0040 (64)\n+3A6C Extra Length          0000 (0)\n+3A6E Comment Length        0000 (0)\n+3A70 Disk Start            0000 (0)\n+3A72 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3A59 Ext File Attributes   81A40000 (2175008768)\n+3A74 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3A5D Local Header Offset   00002F77 (12151)\n-3A61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3A78 Local Header Offset   00002F97 (12183)\n+3A7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3A61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3A7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3AA1 CENTRAL HEADER #22    02014B50 (33639248)\n-3AA5 Created Zip Spec      14 (20) '2.0'\n-3AA6 Created OS            03 (3) 'Unix'\n-3AA7 Extract Zip Spec      14 (20) '2.0'\n-3AA8 Extract OS            00 (0) 'MS-DOS'\n-3AA9 General Purpose Flag  0800 (2048)\n+3ABC CENTRAL HEADER #22    02014B50 (33639248)\n+3AC0 Created Zip Spec      14 (20) '2.0'\n+3AC1 Created OS            03 (3) 'Unix'\n+3AC2 Extract Zip Spec      14 (20) '2.0'\n+3AC3 Extract OS            00 (0) 'MS-DOS'\n+3AC4 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3AAB Compression Method    0008 (8) 'Deflated'\n-3AAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3AB1 CRC                   9AAEB621 (2595141153)\n-3AB5 Compressed Size       0000004A (74)\n-3AB9 Uncompressed Size     0000004F (79)\n-3ABD Filename Length       0047 (71)\n-3ABF Extra Length          0000 (0)\n-3AC1 Comment Length        0000 (0)\n-3AC3 Disk Start            0000 (0)\n-3AC5 Int File Attributes   0000 (0)\n+3AC6 Compression Method    0008 (8) 'Deflated'\n+3AC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3ACC CRC                   9AAEB621 (2595141153)\n+3AD0 Compressed Size       0000004A (74)\n+3AD4 Uncompressed Size     0000004F (79)\n+3AD8 Filename Length       0047 (71)\n+3ADA Extra Length          0000 (0)\n+3ADC Comment Length        0000 (0)\n+3ADE Disk Start            0000 (0)\n+3AE0 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3AC7 Ext File Attributes   81A40000 (2175008768)\n+3AE2 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3ACB Local Header Offset   00003338 (13112)\n-3ACF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3AE6 Local Header Offset   00003353 (13139)\n+3AEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3ACF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3AEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3B16 END CENTRAL HEADER    06054B50 (101010256)\n-3B1A Number of this disk   0000 (0)\n-3B1C Central Dir Disk no   0000 (0)\n-3B1E Entries in this disk  0016 (22)\n-3B20 Total Entries         0016 (22)\n-3B22 Size of Central Dir   0000072F (1839)\n-3B26 Offset to Central Dir 000033E7 (13287)\n-3B2A Comment Length        0000 (0)\n+3B31 END CENTRAL HEADER    06054B50 (101010256)\n+3B35 Number of this disk   0000 (0)\n+3B37 Central Dir Disk no   0000 (0)\n+3B39 Entries in this disk  0016 (22)\n+3B3B Total Entries         0016 (22)\n+3B3D Size of Central Dir   0000072F (1839)\n+3B41 Offset to Central Dir 00003402 (13314)\n+3B45 Comment Length        0000 (0)\n #\n # Error Count: 12\n # Warning Count: 56\n #\n # Done\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": "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"}]}
