<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>89536</bug_id>
          
          <creation_ts>2012-06-19 17:37:27 -0700</creation_ts>
          <short_desc>JSC should be able to show disassembly for all generated JIT code</short_desc>
          <delta_ts>2012-06-19 23:00:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89549</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653040</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-19 17:37:27 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653046</commentid>
    <comment_count>1</comment_count>
      <attachid>148472</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-19 17:41:09 -0700</bug_when>
    <thetext>Created attachment 148472
the patch

Here&apos;s an example of some of the disassembly it gives me in 32-bit mode, when running SunSpider/3d-raytrace:


[pizlo@wartooth OpenSource] DYLD_FRAMEWORK_PATH=WebKitBuild/Debug/ WebKitBuild/Debug/jsc PerformanceTests/SunSpider/tests/sunspider-1.0/3d-raytrace.js 
Generated JIT code for JIT CTI machine trampolines:
    Code at [0xd2b000, 0xd2b280):
            0xd2b000: cmp 0xfb, %edx
            0xd2b003: jnz 0x31e7b0
            0xd2b009: cmp 0x669324, (%eax)
            0xd2b00f: jnz 0x31e7b0
            0xd2b015: mov 0xc(%eax), %ecx
            0xd2b018: cmp 0x7fffffff, %ecx
            0xd2b01e: ja 0x31e7b0
            0xd2b024: mov %ecx, %eax
            0xd2b026: mov 0xffffffff, %edx
            0xd2b02b: ret 
            0xd2b02c: hlt 
            0xd2b02d: hlt 
            0xd2b02e: hlt 
            0xd2b02f: hlt 
            0xd2b030: cmp 0xfb, %edx
            0xd2b033: jnz 0xd2b14b
            0xd2b039: mov 0x4(%eax), %edx
            0xd2b03c: cmp 0xf, 0x8(%edx)
            0xd2b040: jnz 0xd2b14b
            0xd2b046: mov 0x34(%eax), %edx
            0xd2b049: mov 0xfffffffb, -0x14(%edi)
            0xd2b050: mov %edx, -0x18(%edi)
            0xd2b053: pop %ebx
            0xd2b054: mov %ebx, -0x10(%edi)
            0xd2b057: mov %edi, 0x7a9aac84
            0xd2b05d: mov %esp, %ecx
            0xd2b05f: mov %edi, 0x58(%esp)
            0xd2b063: call 0x31fc50
            0xd2b068: push %ebx
            0xd2b069: jmp %eax
            0xd2b06b: hlt 
            0xd2b06c: hlt 
            0xd2b06d: hlt 
            0xd2b06e: hlt 
            0xd2b06f: hlt 
            0xd2b070: cmp 0xfb, %edx
            0xd2b073: jnz 0xd2b17c
            0xd2b079: mov 0x4(%eax), %edx
            0xd2b07c: cmp 0xf, 0x8(%edx)
            0xd2b080: jnz 0xd2b17c
            0xd2b086: mov 0x34(%eax), %edx
            0xd2b089: mov 0xfffffffb, -0x14(%edi)
            0xd2b090: mov %edx, -0x18(%edi)
            0xd2b093: pop %ebx
            0xd2b094: mov %ebx, -0x10(%edi)
            0xd2b097: mov %edi, 0x7a9aac84
            0xd2b09d: mov %esp, %ecx
            0xd2b09f: mov %edi, 0x58(%esp)
            0xd2b0a3: call 0x31fd00
            0xd2b0a8: push %ebx
            0xd2b0a9: jmp %eax
            0xd2b0ab: hlt 
            0xd2b0ac: hlt 
            0xd2b0ad: hlt 
            0xd2b0ae: hlt 
            0xd2b0af: hlt 
            0xd2b0b0: cmp 0xfb, %edx
            0xd2b0b3: jnz 0xd2b14b
            0xd2b0b9: mov 0x4(%eax), %edx
            0xd2b0bc: cmp 0xf, 0x8(%edx)
            0xd2b0c0: jnz 0xd2b14b
            0xd2b0c6: mov 0x34(%eax), %edx
            0xd2b0c9: mov 0xfffffffb, -0x14(%edi)
            0xd2b0d0: mov %edx, -0x18(%edi)
            0xd2b0d3: mov 0x30(%eax), %ecx
            0xd2b0d6: cmp 0x0, 0x8(%ecx)
            0xd2b0da: jge 0xd2b0f6
            0xd2b0e0: pop %ebx
            0xd2b0e1: mov %edi, 0x7a9aac84
            0xd2b0e7: mov %esp, %ecx
            0xd2b0e9: mov %edi, 0x58(%esp)
            0xd2b0ed: call 0x31f6b0
            0xd2b0f2: push %ebx
            0xd2b0f3: mov 0x30(%eax), %ecx
            0xd2b0f6: mov 0x30(%ecx), %eax
            0xd2b0f9: jmp %eax
            0xd2b0fb: hlt 
            0xd2b0fc: hlt 
            0xd2b0fd: hlt 
            0xd2b0fe: hlt 
            0xd2b0ff: hlt 
            0xd2b100: cmp 0xfb, %edx
            0xd2b103: jnz 0xd2b17c
            0xd2b109: mov 0x4(%eax), %edx
            0xd2b10c: cmp 0xf, 0x8(%edx)
            0xd2b110: jnz 0xd2b17c
            0xd2b116: mov 0x34(%eax), %edx
            0xd2b119: mov 0xfffffffb, -0x14(%edi)
            0xd2b120: mov %edx, -0x18(%edi)
            0xd2b123: mov 0x30(%eax), %ecx
            0xd2b126: cmp 0x0, 0xc(%ecx)
            0xd2b12a: jge 0xd2b146
            0xd2b130: pop %ebx
            0xd2b131: mov %edi, 0x7a9aac84
            0xd2b137: mov %esp, %ecx
            0xd2b139: mov %edi, 0x58(%esp)
            0xd2b13d: call 0x31f900
            0xd2b142: push %ebx
            0xd2b143: mov 0x30(%eax), %ecx
            0xd2b146: mov 0x34(%ecx), %eax
            0xd2b149: jmp %eax
            0xd2b14b: mov -0x28(%edi), %ecx
            0xd2b14e: mov -0x18(%ecx), %ecx
            0xd2b151: mov 0xfffffffb, -0x14(%edi)
            0xd2b158: mov %ecx, -0x18(%edi)
            0xd2b15b: pop %ebx
            0xd2b15c: mov %ebx, -0x10(%edi)
            0xd2b15f: mov 0x0, -0x8(%edi)
            0xd2b166: mov %edi, 0x7a9aac84
            0xd2b16c: mov %esp, %ecx
            0xd2b16e: mov %edi, 0x58(%esp)
            0xd2b172: call 0x31fe70
            0xd2b177: mov -0x28(%edi), %edi
            0xd2b17a: push %ebx
            0xd2b17b: ret 
            0xd2b17c: mov -0x28(%edi), %ecx
            0xd2b17f: mov -0x18(%ecx), %ecx
            0xd2b182: mov 0xfffffffb, -0x14(%edi)
            0xd2b189: mov %ecx, -0x18(%edi)
            0xd2b18c: pop %ebx
            0xd2b18d: mov %ebx, -0x10(%edi)
            0xd2b190: mov 0x0, -0x8(%edi)
            0xd2b197: mov %edi, 0x7a9aac84
            0xd2b19d: mov %esp, %ecx
            0xd2b19f: mov %edi, 0x58(%esp)
            0xd2b1a3: call 0x320a70
            0xd2b1a8: mov -0x28(%edi), %edi
            0xd2b1ab: push %ebx
            0xd2b1ac: ret 
            0xd2b1ad: hlt 
            0xd2b1ae: hlt 
            0xd2b1af: hlt 
            0xd2b1b0: mov 0x0, -0x8(%edi)
            0xd2b1b7: mov %edi, 0x7a9aac84
            0xd2b1bd: mov -0x28(%edi), %eax
            0xd2b1c0: mov -0x18(%eax), %edx
            0xd2b1c3: mov 0xfffffffb, -0x14(%edi)
            0xd2b1ca: mov %edx, -0x18(%edi)
            0xd2b1cd: mov (%esp), %edx
            0xd2b1d0: mov %edx, -0x10(%edi)
            0xd2b1d3: mov %edi, %ecx
            0xd2b1d5: sub 0xc, %esp
            0xd2b1d8: mov -0x20(%edi), %edx
            0xd2b1db: mov 0x30(%edx), %edx
            0xd2b1de: mov %eax, %edi
            0xd2b1e0: call 0x38(%edx)
            0xd2b1e3: add 0xc, %esp
            0xd2b1e6: cmp 0xfa, 0x7a9aba70
            0xd2b1ed: jnz 0xd2b1f4
            0xd2b1f3: ret 
            0xd2b1f4: pop %edx
            0xd2b1f5: mov 0x7a9aba84, %ecx
            0xd2b1fa: mov %edx, (%ecx)
            0xd2b1fc: mov %edi, 0x58(%esp)
            0xd2b200: mov %edi, 0x7a9aac84
            0xd2b206: mov 0x3189a9, %edx
            0xd2b20b: push %edx
            0xd2b20c: ret 
            0xd2b20d: hlt 
            0xd2b20e: hlt 
            0xd2b20f: hlt 
            0xd2b210: mov 0x0, -0x8(%edi)
            0xd2b217: mov %edi, 0x7a9aac84
            0xd2b21d: mov -0x28(%edi), %eax
            0xd2b220: mov -0x18(%eax), %edx
            0xd2b223: mov 0xfffffffb, -0x14(%edi)
            0xd2b22a: mov %edx, -0x18(%edi)
            0xd2b22d: mov (%esp), %edx
            0xd2b230: mov %edx, -0x10(%edi)
            0xd2b233: mov %edi, %ecx
            0xd2b235: sub 0xc, %esp
            0xd2b238: mov -0x20(%edi), %edx
            0xd2b23b: mov 0x30(%edx), %edx
            0xd2b23e: mov %eax, %edi
            0xd2b240: call 0x3c(%edx)
            0xd2b243: add 0xc, %esp
            0xd2b246: cmp 0xfa, 0x7a9aba70
            0xd2b24d: jnz 0xd2b254
            0xd2b253: ret 
            0xd2b254: pop %edx
            0xd2b255: mov 0x7a9aba84, %ecx
            0xd2b25a: mov %edx, (%ecx)
            0xd2b25c: mov %edi, 0x58(%esp)
            0xd2b260: mov %edi, 0x7a9aac84
            0xd2b266: mov 0x3189a9, %edx
            0xd2b26b: push %edx
            0xd2b26c: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b280, 0xd2b2e0):
            0xd2b280: mov 0x0, -0x8(%edi)
            0xd2b287: mov %edi, 0x7a9aac84
            0xd2b28d: mov -0x28(%edi), %eax
            0xd2b290: mov -0x18(%eax), %edx
            0xd2b293: mov 0xfffffffb, -0x14(%edi)
            0xd2b29a: mov %edx, -0x18(%edi)
            0xd2b29d: mov (%esp), %edx
            0xd2b2a0: mov %edx, -0x10(%edi)
            0xd2b2a3: mov %edi, %ecx
            0xd2b2a5: sub 0xc, %esp
            0xd2b2a8: mov %eax, %edi
            0xd2b2aa: call 0x2bbc80
            0xd2b2af: add 0xc, %esp
            0xd2b2b2: cmp 0xfa, 0x7a9aba70
            0xd2b2b9: jnz 0xd2b2c0
            0xd2b2bf: ret 
            0xd2b2c0: pop %edx
            0xd2b2c1: mov 0x7a9aba84, %ecx
            0xd2b2c6: mov %edx, (%ecx)
            0xd2b2c8: mov %edi, 0x58(%esp)
            0xd2b2cc: mov %edi, 0x7a9aac84
            0xd2b2d2: mov 0x3189a9, %edx
            0xd2b2d7: push %edx
            0xd2b2d8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b2e0, 0xd2b340):
            0xd2b2e0: mov 0x0, -0x8(%edi)
            0xd2b2e7: mov %edi, 0x7a9aac84
            0xd2b2ed: mov -0x28(%edi), %eax
            0xd2b2f0: mov -0x18(%eax), %edx
            0xd2b2f3: mov 0xfffffffb, -0x14(%edi)
            0xd2b2fa: mov %edx, -0x18(%edi)
            0xd2b2fd: mov (%esp), %edx
            0xd2b300: mov %edx, -0x10(%edi)
            0xd2b303: mov %edi, %ecx
            0xd2b305: sub 0xc, %esp
            0xd2b308: mov %eax, %edi
            0xd2b30a: call 0x2bc050
            0xd2b30f: add 0xc, %esp
            0xd2b312: cmp 0xfa, 0x7a9aba70
            0xd2b319: jnz 0xd2b320
            0xd2b31f: ret 
            0xd2b320: pop %edx
            0xd2b321: mov 0x7a9aba84, %ecx
            0xd2b326: mov %edx, (%ecx)
            0xd2b328: mov %edi, 0x58(%esp)
            0xd2b32c: mov %edi, 0x7a9aac84
            0xd2b332: mov 0x3189a9, %edx
            0xd2b337: push %edx
            0xd2b338: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b340, 0xd2b3a0):
            0xd2b340: mov 0x0, -0x8(%edi)
            0xd2b347: mov %edi, 0x7a9aac84
            0xd2b34d: mov -0x28(%edi), %eax
            0xd2b350: mov -0x18(%eax), %edx
            0xd2b353: mov 0xfffffffb, -0x14(%edi)
            0xd2b35a: mov %edx, -0x18(%edi)
            0xd2b35d: mov (%esp), %edx
            0xd2b360: mov %edx, -0x10(%edi)
            0xd2b363: mov %edi, %ecx
            0xd2b365: sub 0xc, %esp
            0xd2b368: mov %eax, %edi
            0xd2b36a: call 0x2bc5f0
            0xd2b36f: add 0xc, %esp
            0xd2b372: cmp 0xfa, 0x7a9aba70
            0xd2b379: jnz 0xd2b380
            0xd2b37f: ret 
            0xd2b380: pop %edx
            0xd2b381: mov 0x7a9aba84, %ecx
            0xd2b386: mov %edx, (%ecx)
            0xd2b388: mov %edi, 0x58(%esp)
            0xd2b38c: mov %edi, 0x7a9aac84
            0xd2b392: mov 0x3189a9, %edx
            0xd2b397: push %edx
            0xd2b398: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b3a0, 0xd2b400):
            0xd2b3a0: mov 0x0, -0x8(%edi)
            0xd2b3a7: mov %edi, 0x7a9aac84
            0xd2b3ad: mov -0x28(%edi), %eax
            0xd2b3b0: mov -0x18(%eax), %edx
            0xd2b3b3: mov 0xfffffffb, -0x14(%edi)
            0xd2b3ba: mov %edx, -0x18(%edi)
            0xd2b3bd: mov (%esp), %edx
            0xd2b3c0: mov %edx, -0x10(%edi)
            0xd2b3c3: mov %edi, %ecx
            0xd2b3c5: sub 0xc, %esp
            0xd2b3c8: mov %eax, %edi
            0xd2b3ca: call 0x2bc730
            0xd2b3cf: add 0xc, %esp
            0xd2b3d2: cmp 0xfa, 0x7a9aba70
            0xd2b3d9: jnz 0xd2b3e0
            0xd2b3df: ret 
            0xd2b3e0: pop %edx
            0xd2b3e1: mov 0x7a9aba84, %ecx
            0xd2b3e6: mov %edx, (%ecx)
            0xd2b3e8: mov %edi, 0x58(%esp)
            0xd2b3ec: mov %edi, 0x7a9aac84
            0xd2b3f2: mov 0x3189a9, %edx
            0xd2b3f7: push %edx
            0xd2b3f8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b400, 0xd2b460):
            0xd2b400: mov 0x0, -0x8(%edi)
            0xd2b407: mov %edi, 0x7a9aac84
            0xd2b40d: mov -0x28(%edi), %eax
            0xd2b410: mov -0x18(%eax), %edx
            0xd2b413: mov 0xfffffffb, -0x14(%edi)
            0xd2b41a: mov %edx, -0x18(%edi)
            0xd2b41d: mov (%esp), %edx
            0xd2b420: mov %edx, -0x10(%edi)
            0xd2b423: mov %edi, %ecx
            0xd2b425: sub 0xc, %esp
            0xd2b428: mov %eax, %edi
            0xd2b42a: call 0x37eaf0
            0xd2b42f: add 0xc, %esp
            0xd2b432: cmp 0xfa, 0x7a9aba70
            0xd2b439: jnz 0xd2b440
            0xd2b43f: ret 
            0xd2b440: pop %edx
            0xd2b441: mov 0x7a9aba84, %ecx
            0xd2b446: mov %edx, (%ecx)
            0xd2b448: mov %edi, 0x58(%esp)
            0xd2b44c: mov %edi, 0x7a9aac84
            0xd2b452: mov 0x3189a9, %edx
            0xd2b457: push %edx
            0xd2b458: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b460, 0xd2b4c0):
            0xd2b460: mov 0x0, -0x8(%edi)
            0xd2b467: mov %edi, 0x7a9aac84
            0xd2b46d: mov -0x28(%edi), %eax
            0xd2b470: mov -0x18(%eax), %edx
            0xd2b473: mov 0xfffffffb, -0x14(%edi)
            0xd2b47a: mov %edx, -0x18(%edi)
            0xd2b47d: mov (%esp), %edx
            0xd2b480: mov %edx, -0x10(%edi)
            0xd2b483: mov %edi, %ecx
            0xd2b485: sub 0xc, %esp
            0xd2b488: mov %eax, %edi
            0xd2b48a: call 0x37ec20
            0xd2b48f: add 0xc, %esp
            0xd2b492: cmp 0xfa, 0x7a9aba70
            0xd2b499: jnz 0xd2b4a0
            0xd2b49f: ret 
            0xd2b4a0: pop %edx
            0xd2b4a1: mov 0x7a9aba84, %ecx
            0xd2b4a6: mov %edx, (%ecx)
            0xd2b4a8: mov %edi, 0x58(%esp)
            0xd2b4ac: mov %edi, 0x7a9aac84
            0xd2b4b2: mov 0x3189a9, %edx
            0xd2b4b7: push %edx
            0xd2b4b8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b4c0, 0xd2b520):
            0xd2b4c0: mov 0x0, -0x8(%edi)
            0xd2b4c7: mov %edi, 0x7a9aac84
            0xd2b4cd: mov -0x28(%edi), %eax
            0xd2b4d0: mov -0x18(%eax), %edx
            0xd2b4d3: mov 0xfffffffb, -0x14(%edi)
            0xd2b4da: mov %edx, -0x18(%edi)
            0xd2b4dd: mov (%esp), %edx
            0xd2b4e0: mov %edx, -0x10(%edi)
            0xd2b4e3: mov %edi, %ecx
            0xd2b4e5: sub 0xc, %esp
            0xd2b4e8: mov %eax, %edi
            0xd2b4ea: call 0x37cf10
            0xd2b4ef: add 0xc, %esp
            0xd2b4f2: cmp 0xfa, 0x7a9aba70
            0xd2b4f9: jnz 0xd2b500
            0xd2b4ff: ret 
            0xd2b500: pop %edx
            0xd2b501: mov 0x7a9aba84, %ecx
            0xd2b506: mov %edx, (%ecx)
            0xd2b508: mov %edi, 0x58(%esp)
            0xd2b50c: mov %edi, 0x7a9aac84
            0xd2b512: mov 0x3189a9, %edx
            0xd2b517: push %edx
            0xd2b518: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b520, 0xd2b580):
            0xd2b520: mov 0x0, -0x8(%edi)
            0xd2b527: mov %edi, 0x7a9aac84
            0xd2b52d: mov -0x28(%edi), %eax
            0xd2b530: mov -0x18(%eax), %edx
            0xd2b533: mov 0xfffffffb, -0x14(%edi)
            0xd2b53a: mov %edx, -0x18(%edi)
            0xd2b53d: mov (%esp), %edx
            0xd2b540: mov %edx, -0x10(%edi)
            0xd2b543: mov %edi, %ecx
            0xd2b545: sub 0xc, %esp
            0xd2b548: mov %eax, %edi
            0xd2b54a: call 0x8e420
            0xd2b54f: add 0xc, %esp
            0xd2b552: cmp 0xfa, 0x7a9aba70
            0xd2b559: jnz 0xd2b560
            0xd2b55f: ret 
            0xd2b560: pop %edx
            0xd2b561: mov 0x7a9aba84, %ecx
            0xd2b566: mov %edx, (%ecx)
            0xd2b568: mov %edi, 0x58(%esp)
            0xd2b56c: mov %edi, 0x7a9aac84
            0xd2b572: mov 0x3189a9, %edx
            0xd2b577: push %edx
            0xd2b578: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b580, 0xd2b5e0):
            0xd2b580: mov 0x0, -0x8(%edi)
            0xd2b587: mov %edi, 0x7a9aac84
            0xd2b58d: mov -0x28(%edi), %eax
            0xd2b590: mov -0x18(%eax), %edx
            0xd2b593: mov 0xfffffffb, -0x14(%edi)
            0xd2b59a: mov %edx, -0x18(%edi)
            0xd2b59d: mov (%esp), %edx
            0xd2b5a0: mov %edx, -0x10(%edi)
            0xd2b5a3: mov %edi, %ecx
            0xd2b5a5: sub 0xc, %esp
            0xd2b5a8: mov %eax, %edi
            0xd2b5aa: call 0x8e4f0
            0xd2b5af: add 0xc, %esp
            0xd2b5b2: cmp 0xfa, 0x7a9aba70
            0xd2b5b9: jnz 0xd2b5c0
            0xd2b5bf: ret 
            0xd2b5c0: pop %edx
            0xd2b5c1: mov 0x7a9aba84, %ecx
            0xd2b5c6: mov %edx, (%ecx)
            0xd2b5c8: mov %edi, 0x58(%esp)
            0xd2b5cc: mov %edi, 0x7a9aac84
            0xd2b5d2: mov 0x3189a9, %edx
            0xd2b5d7: push %edx
            0xd2b5d8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b5e0, 0xd2b640):
            0xd2b5e0: mov 0x0, -0x8(%edi)
            0xd2b5e7: mov %edi, 0x7a9aac84
            0xd2b5ed: mov -0x28(%edi), %eax
            0xd2b5f0: mov -0x18(%eax), %edx
            0xd2b5f3: mov 0xfffffffb, -0x14(%edi)
            0xd2b5fa: mov %edx, -0x18(%edi)
            0xd2b5fd: mov (%esp), %edx
            0xd2b600: mov %edx, -0x10(%edi)
            0xd2b603: mov %edi, %ecx
            0xd2b605: sub 0xc, %esp
            0xd2b608: mov %eax, %edi
            0xd2b60a: call 0x8e640
            0xd2b60f: add 0xc, %esp
            0xd2b612: cmp 0xfa, 0x7a9aba70
            0xd2b619: jnz 0xd2b620
            0xd2b61f: ret 
            0xd2b620: pop %edx
            0xd2b621: mov 0x7a9aba84, %ecx
            0xd2b626: mov %edx, (%ecx)
            0xd2b628: mov %edi, 0x58(%esp)
            0xd2b62c: mov %edi, 0x7a9aac84
            0xd2b632: mov 0x3189a9, %edx
            0xd2b637: push %edx
            0xd2b638: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b640, 0xd2b6a0):
            0xd2b640: mov 0x0, -0x8(%edi)
            0xd2b647: mov %edi, 0x7a9aac84
            0xd2b64d: mov -0x28(%edi), %eax
            0xd2b650: mov -0x18(%eax), %edx
            0xd2b653: mov 0xfffffffb, -0x14(%edi)
            0xd2b65a: mov %edx, -0x18(%edi)
            0xd2b65d: mov (%esp), %edx
            0xd2b660: mov %edx, -0x10(%edi)
            0xd2b663: mov %edi, %ecx
            0xd2b665: sub 0xc, %esp
            0xd2b668: mov %eax, %edi
            0xd2b66a: call 0x8e660
            0xd2b66f: add 0xc, %esp
            0xd2b672: cmp 0xfa, 0x7a9aba70
            0xd2b679: jnz 0xd2b680
            0xd2b67f: ret 
            0xd2b680: pop %edx
            0xd2b681: mov 0x7a9aba84, %ecx
            0xd2b686: mov %edx, (%ecx)
            0xd2b688: mov %edi, 0x58(%esp)
            0xd2b68c: mov %edi, 0x7a9aac84
            0xd2b692: mov 0x3189a9, %edx
            0xd2b697: push %edx
            0xd2b698: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b6a0, 0xd2b700):
            0xd2b6a0: mov 0x0, -0x8(%edi)
            0xd2b6a7: mov %edi, 0x7a9aac84
            0xd2b6ad: mov -0x28(%edi), %eax
            0xd2b6b0: mov -0x18(%eax), %edx
            0xd2b6b3: mov 0xfffffffb, -0x14(%edi)
            0xd2b6ba: mov %edx, -0x18(%edi)
            0xd2b6bd: mov (%esp), %edx
            0xd2b6c0: mov %edx, -0x10(%edi)
            0xd2b6c3: mov %edi, %ecx
            0xd2b6c5: sub 0xc, %esp
            0xd2b6c8: mov %eax, %edi
            0xd2b6ca: call 0x8e6e0
            0xd2b6cf: add 0xc, %esp
            0xd2b6d2: cmp 0xfa, 0x7a9aba70
            0xd2b6d9: jnz 0xd2b6e0
            0xd2b6df: ret 
            0xd2b6e0: pop %edx
            0xd2b6e1: mov 0x7a9aba84, %ecx
            0xd2b6e6: mov %edx, (%ecx)
            0xd2b6e8: mov %edi, 0x58(%esp)
            0xd2b6ec: mov %edi, 0x7a9aac84
            0xd2b6f2: mov 0x3189a9, %edx
            0xd2b6f7: push %edx
            0xd2b6f8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b700, 0xd2b760):
            0xd2b700: mov 0x0, -0x8(%edi)
            0xd2b707: mov %edi, 0x7a9aac84
            0xd2b70d: mov -0x28(%edi), %eax
            0xd2b710: mov -0x18(%eax), %edx
            0xd2b713: mov 0xfffffffb, -0x14(%edi)
            0xd2b71a: mov %edx, -0x18(%edi)
            0xd2b71d: mov (%esp), %edx
            0xd2b720: mov %edx, -0x10(%edi)
            0xd2b723: mov %edi, %ecx
            0xd2b725: sub 0xc, %esp
            0xd2b728: mov %eax, %edi
            0xd2b72a: call 0x8e760
            0xd2b72f: add 0xc, %esp
            0xd2b732: cmp 0xfa, 0x7a9aba70
            0xd2b739: jnz 0xd2b740
            0xd2b73f: ret 
            0xd2b740: pop %edx
            0xd2b741: mov 0x7a9aba84, %ecx
            0xd2b746: mov %edx, (%ecx)
            0xd2b748: mov %edi, 0x58(%esp)
            0xd2b74c: mov %edi, 0x7a9aac84
            0xd2b752: mov 0x3189a9, %edx
            0xd2b757: push %edx
            0xd2b758: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b760, 0xd2b7c0):
            0xd2b760: mov 0x0, -0x8(%edi)
            0xd2b767: mov %edi, 0x7a9aac84
            0xd2b76d: mov -0x28(%edi), %eax
            0xd2b770: mov -0x18(%eax), %edx
            0xd2b773: mov 0xfffffffb, -0x14(%edi)
            0xd2b77a: mov %edx, -0x18(%edi)
            0xd2b77d: mov (%esp), %edx
            0xd2b780: mov %edx, -0x10(%edi)
            0xd2b783: mov %edi, %ecx
            0xd2b785: sub 0xc, %esp
            0xd2b788: mov %eax, %edi
            0xd2b78a: call 0x8e790
            0xd2b78f: add 0xc, %esp
            0xd2b792: cmp 0xfa, 0x7a9aba70
            0xd2b799: jnz 0xd2b7a0
            0xd2b79f: ret 
            0xd2b7a0: pop %edx
            0xd2b7a1: mov 0x7a9aba84, %ecx
            0xd2b7a6: mov %edx, (%ecx)
            0xd2b7a8: mov %edi, 0x58(%esp)
            0xd2b7ac: mov %edi, 0x7a9aac84
            0xd2b7b2: mov 0x3189a9, %edx
            0xd2b7b7: push %edx
            0xd2b7b8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b7c0, 0xd2b820):
            0xd2b7c0: mov 0x0, -0x8(%edi)
            0xd2b7c7: mov %edi, 0x7a9aac84
            0xd2b7cd: mov -0x28(%edi), %eax
            0xd2b7d0: mov -0x18(%eax), %edx
            0xd2b7d3: mov 0xfffffffb, -0x14(%edi)
            0xd2b7da: mov %edx, -0x18(%edi)
            0xd2b7dd: mov (%esp), %edx
            0xd2b7e0: mov %edx, -0x10(%edi)
            0xd2b7e3: mov %edi, %ecx
            0xd2b7e5: sub 0xc, %esp
            0xd2b7e8: mov %eax, %edi
            0xd2b7ea: call 0x8eb50
            0xd2b7ef: add 0xc, %esp
            0xd2b7f2: cmp 0xfa, 0x7a9aba70
            0xd2b7f9: jnz 0xd2b800
            0xd2b7ff: ret 
            0xd2b800: pop %edx
            0xd2b801: mov 0x7a9aba84, %ecx
            0xd2b806: mov %edx, (%ecx)
            0xd2b808: mov %edi, 0x58(%esp)
            0xd2b80c: mov %edi, 0x7a9aac84
            0xd2b812: mov 0x3189a9, %edx
            0xd2b817: push %edx
            0xd2b818: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b820, 0xd2b880):
            0xd2b820: mov 0x0, -0x8(%edi)
            0xd2b827: mov %edi, 0x7a9aac84
            0xd2b82d: mov -0x28(%edi), %eax
            0xd2b830: mov -0x18(%eax), %edx
            0xd2b833: mov 0xfffffffb, -0x14(%edi)
            0xd2b83a: mov %edx, -0x18(%edi)
            0xd2b83d: mov (%esp), %edx
            0xd2b840: mov %edx, -0x10(%edi)
            0xd2b843: mov %edi, %ecx
            0xd2b845: sub 0xc, %esp
            0xd2b848: mov %eax, %edi
            0xd2b84a: call 0x8edf0
            0xd2b84f: add 0xc, %esp
            0xd2b852: cmp 0xfa, 0x7a9aba70
            0xd2b859: jnz 0xd2b860
            0xd2b85f: ret 
            0xd2b860: pop %edx
            0xd2b861: mov 0x7a9aba84, %ecx
            0xd2b866: mov %edx, (%ecx)
            0xd2b868: mov %edi, 0x58(%esp)
            0xd2b86c: mov %edi, 0x7a9aac84
            0xd2b872: mov 0x3189a9, %edx
            0xd2b877: push %edx
            0xd2b878: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b880, 0xd2b8e0):
            0xd2b880: mov 0x0, -0x8(%edi)
            0xd2b887: mov %edi, 0x7a9aac84
            0xd2b88d: mov -0x28(%edi), %eax
            0xd2b890: mov -0x18(%eax), %edx
            0xd2b893: mov 0xfffffffb, -0x14(%edi)
            0xd2b89a: mov %edx, -0x18(%edi)
            0xd2b89d: mov (%esp), %edx
            0xd2b8a0: mov %edx, -0x10(%edi)
            0xd2b8a3: mov %edi, %ecx
            0xd2b8a5: sub 0xc, %esp
            0xd2b8a8: mov %eax, %edi
            0xd2b8aa: call 0x8f070
            0xd2b8af: add 0xc, %esp
            0xd2b8b2: cmp 0xfa, 0x7a9aba70
            0xd2b8b9: jnz 0xd2b8c0
            0xd2b8bf: ret 
            0xd2b8c0: pop %edx
            0xd2b8c1: mov 0x7a9aba84, %ecx
            0xd2b8c6: mov %edx, (%ecx)
            0xd2b8c8: mov %edi, 0x58(%esp)
            0xd2b8cc: mov %edi, 0x7a9aac84
            0xd2b8d2: mov 0x3189a9, %edx
            0xd2b8d7: push %edx
            0xd2b8d8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b8e0, 0xd2b940):
            0xd2b8e0: mov 0x0, -0x8(%edi)
            0xd2b8e7: mov %edi, 0x7a9aac84
            0xd2b8ed: mov -0x28(%edi), %eax
            0xd2b8f0: mov -0x18(%eax), %edx
            0xd2b8f3: mov 0xfffffffb, -0x14(%edi)
            0xd2b8fa: mov %edx, -0x18(%edi)
            0xd2b8fd: mov (%esp), %edx
            0xd2b900: mov %edx, -0x10(%edi)
            0xd2b903: mov %edi, %ecx
            0xd2b905: sub 0xc, %esp
            0xd2b908: mov %eax, %edi
            0xd2b90a: call 0x8f2b0
            0xd2b90f: add 0xc, %esp
            0xd2b912: cmp 0xfa, 0x7a9aba70
            0xd2b919: jnz 0xd2b920
            0xd2b91f: ret 
            0xd2b920: pop %edx
            0xd2b921: mov 0x7a9aba84, %ecx
            0xd2b926: mov %edx, (%ecx)
            0xd2b928: mov %edi, 0x58(%esp)
            0xd2b92c: mov %edi, 0x7a9aac84
            0xd2b932: mov 0x3189a9, %edx
            0xd2b937: push %edx
            0xd2b938: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b940, 0xd2b9a0):
            0xd2b940: mov 0x0, -0x8(%edi)
            0xd2b947: mov %edi, 0x7a9aac84
            0xd2b94d: mov -0x28(%edi), %eax
            0xd2b950: mov -0x18(%eax), %edx
            0xd2b953: mov 0xfffffffb, -0x14(%edi)
            0xd2b95a: mov %edx, -0x18(%edi)
            0xd2b95d: mov (%esp), %edx
            0xd2b960: mov %edx, -0x10(%edi)
            0xd2b963: mov %edi, %ecx
            0xd2b965: sub 0xc, %esp
            0xd2b968: mov %eax, %edi
            0xd2b96a: call 0x8f400
            0xd2b96f: add 0xc, %esp
            0xd2b972: cmp 0xfa, 0x7a9aba70
            0xd2b979: jnz 0xd2b980
            0xd2b97f: ret 
            0xd2b980: pop %edx
            0xd2b981: mov 0x7a9aba84, %ecx
            0xd2b986: mov %edx, (%ecx)
            0xd2b988: mov %edi, 0x58(%esp)
            0xd2b98c: mov %edi, 0x7a9aac84
            0xd2b992: mov 0x3189a9, %edx
            0xd2b997: push %edx
            0xd2b998: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2b9a0, 0xd2ba00):
            0xd2b9a0: mov 0x0, -0x8(%edi)
            0xd2b9a7: mov %edi, 0x7a9aac84
            0xd2b9ad: mov -0x28(%edi), %eax
            0xd2b9b0: mov -0x18(%eax), %edx
            0xd2b9b3: mov 0xfffffffb, -0x14(%edi)
            0xd2b9ba: mov %edx, -0x18(%edi)
            0xd2b9bd: mov (%esp), %edx
            0xd2b9c0: mov %edx, -0x10(%edi)
            0xd2b9c3: mov %edi, %ecx
            0xd2b9c5: sub 0xc, %esp
            0xd2b9c8: mov %eax, %edi
            0xd2b9ca: call 0x8f440
            0xd2b9cf: add 0xc, %esp
            0xd2b9d2: cmp 0xfa, 0x7a9aba70
            0xd2b9d9: jnz 0xd2b9e0
            0xd2b9df: ret 
            0xd2b9e0: pop %edx
            0xd2b9e1: mov 0x7a9aba84, %ecx
            0xd2b9e6: mov %edx, (%ecx)
            0xd2b9e8: mov %edi, 0x58(%esp)
            0xd2b9ec: mov %edi, 0x7a9aac84
            0xd2b9f2: mov 0x3189a9, %edx
            0xd2b9f7: push %edx
            0xd2b9f8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2ba00, 0xd2ba60):
            0xd2ba00: mov 0x0, -0x8(%edi)
            0xd2ba07: mov %edi, 0x7a9aac84
            0xd2ba0d: mov -0x28(%edi), %eax
            0xd2ba10: mov -0x18(%eax), %edx
            0xd2ba13: mov 0xfffffffb, -0x14(%edi)
            0xd2ba1a: mov %edx, -0x18(%edi)
            0xd2ba1d: mov (%esp), %edx
            0xd2ba20: mov %edx, -0x10(%edi)
            0xd2ba23: mov %edi, %ecx
            0xd2ba25: sub 0xc, %esp
            0xd2ba28: mov %eax, %edi
            0xd2ba2a: call 0x8f5e0
            0xd2ba2f: add 0xc, %esp
            0xd2ba32: cmp 0xfa, 0x7a9aba70
            0xd2ba39: jnz 0xd2ba40
            0xd2ba3f: ret 
            0xd2ba40: pop %edx
            0xd2ba41: mov 0x7a9aba84, %ecx
            0xd2ba46: mov %edx, (%ecx)
            0xd2ba48: mov %edi, 0x58(%esp)
            0xd2ba4c: mov %edi, 0x7a9aac84
            0xd2ba52: mov 0x3189a9, %edx
            0xd2ba57: push %edx
            0xd2ba58: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2ba60, 0xd2bac0):
            0xd2ba60: mov 0x0, -0x8(%edi)
            0xd2ba67: mov %edi, 0x7a9aac84
            0xd2ba6d: mov -0x28(%edi), %eax
            0xd2ba70: mov -0x18(%eax), %edx
            0xd2ba73: mov 0xfffffffb, -0x14(%edi)
            0xd2ba7a: mov %edx, -0x18(%edi)
            0xd2ba7d: mov (%esp), %edx
            0xd2ba80: mov %edx, -0x10(%edi)
            0xd2ba83: mov %edi, %ecx
            0xd2ba85: sub 0xc, %esp
            0xd2ba88: mov %eax, %edi
            0xd2ba8a: call 0x8f780
            0xd2ba8f: add 0xc, %esp
            0xd2ba92: cmp 0xfa, 0x7a9aba70
            0xd2ba99: jnz 0xd2baa0
            0xd2ba9f: ret 
            0xd2baa0: pop %edx
            0xd2baa1: mov 0x7a9aba84, %ecx
            0xd2baa6: mov %edx, (%ecx)
            0xd2baa8: mov %edi, 0x58(%esp)
            0xd2baac: mov %edi, 0x7a9aac84
            0xd2bab2: mov 0x3189a9, %edx
            0xd2bab7: push %edx
            0xd2bab8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bac0, 0xd2bb20):
            0xd2bac0: mov 0x0, -0x8(%edi)
            0xd2bac7: mov %edi, 0x7a9aac84
            0xd2bacd: mov -0x28(%edi), %eax
            0xd2bad0: mov -0x18(%eax), %edx
            0xd2bad3: mov 0xfffffffb, -0x14(%edi)
            0xd2bada: mov %edx, -0x18(%edi)
            0xd2badd: mov (%esp), %edx
            0xd2bae0: mov %edx, -0x10(%edi)
            0xd2bae3: mov %edi, %ecx
            0xd2bae5: sub 0xc, %esp
            0xd2bae8: mov %eax, %edi
            0xd2baea: call 0x8f920
            0xd2baef: add 0xc, %esp
            0xd2baf2: cmp 0xfa, 0x7a9aba70
            0xd2baf9: jnz 0xd2bb00
            0xd2baff: ret 
            0xd2bb00: pop %edx
            0xd2bb01: mov 0x7a9aba84, %ecx
            0xd2bb06: mov %edx, (%ecx)
            0xd2bb08: mov %edi, 0x58(%esp)
            0xd2bb0c: mov %edi, 0x7a9aac84
            0xd2bb12: mov 0x3189a9, %edx
            0xd2bb17: push %edx
            0xd2bb18: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bb20, 0xd2bb80):
            0xd2bb20: mov 0x0, -0x8(%edi)
            0xd2bb27: mov %edi, 0x7a9aac84
            0xd2bb2d: mov -0x28(%edi), %eax
            0xd2bb30: mov -0x18(%eax), %edx
            0xd2bb33: mov 0xfffffffb, -0x14(%edi)
            0xd2bb3a: mov %edx, -0x18(%edi)
            0xd2bb3d: mov (%esp), %edx
            0xd2bb40: mov %edx, -0x10(%edi)
            0xd2bb43: mov %edi, %ecx
            0xd2bb45: sub 0xc, %esp
            0xd2bb48: mov %eax, %edi
            0xd2bb4a: call 0x8fac0
            0xd2bb4f: add 0xc, %esp
            0xd2bb52: cmp 0xfa, 0x7a9aba70
            0xd2bb59: jnz 0xd2bb60
            0xd2bb5f: ret 
            0xd2bb60: pop %edx
            0xd2bb61: mov 0x7a9aba84, %ecx
            0xd2bb66: mov %edx, (%ecx)
            0xd2bb68: mov %edi, 0x58(%esp)
            0xd2bb6c: mov %edi, 0x7a9aac84
            0xd2bb72: mov 0x3189a9, %edx
            0xd2bb77: push %edx
            0xd2bb78: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bb80, 0xd2bbe0):
            0xd2bb80: mov 0x0, -0x8(%edi)
            0xd2bb87: mov %edi, 0x7a9aac84
            0xd2bb8d: mov -0x28(%edi), %eax
            0xd2bb90: mov -0x18(%eax), %edx
            0xd2bb93: mov 0xfffffffb, -0x14(%edi)
            0xd2bb9a: mov %edx, -0x18(%edi)
            0xd2bb9d: mov (%esp), %edx
            0xd2bba0: mov %edx, -0x10(%edi)
            0xd2bba3: mov %edi, %ecx
            0xd2bba5: sub 0xc, %esp
            0xd2bba8: mov %eax, %edi
            0xd2bbaa: call 0x8fc60
            0xd2bbaf: add 0xc, %esp
            0xd2bbb2: cmp 0xfa, 0x7a9aba70
            0xd2bbb9: jnz 0xd2bbc0
            0xd2bbbf: ret 
            0xd2bbc0: pop %edx
            0xd2bbc1: mov 0x7a9aba84, %ecx
            0xd2bbc6: mov %edx, (%ecx)
            0xd2bbc8: mov %edi, 0x58(%esp)
            0xd2bbcc: mov %edi, 0x7a9aac84
            0xd2bbd2: mov 0x3189a9, %edx
            0xd2bbd7: push %edx
            0xd2bbd8: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bbe0, 0xd2bc40):
            0xd2bbe0: mov 0x0, -0x8(%edi)
            0xd2bbe7: mov %edi, 0x7a9aac84
            0xd2bbed: mov -0x28(%edi), %eax
            0xd2bbf0: mov -0x18(%eax), %edx
            0xd2bbf3: mov 0xfffffffb, -0x14(%edi)
            0xd2bbfa: mov %edx, -0x18(%edi)
            0xd2bbfd: mov (%esp), %edx
            0xd2bc00: mov %edx, -0x10(%edi)
            0xd2bc03: mov %edi, %ecx
            0xd2bc05: sub 0xc, %esp
            0xd2bc08: mov %eax, %edi
            0xd2bc0a: call 0x8fe00
            0xd2bc0f: add 0xc, %esp
            0xd2bc12: cmp 0xfa, 0x7a9aba70
            0xd2bc19: jnz 0xd2bc20
            0xd2bc1f: ret 
            0xd2bc20: pop %edx
            0xd2bc21: mov 0x7a9aba84, %ecx
            0xd2bc26: mov %edx, (%ecx)
            0xd2bc28: mov %edi, 0x58(%esp)
            0xd2bc2c: mov %edi, 0x7a9aac84
            0xd2bc32: mov 0x3189a9, %edx
            0xd2bc37: push %edx
            0xd2bc38: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bc40, 0xd2bca0):
            0xd2bc40: mov 0x0, -0x8(%edi)
            0xd2bc47: mov %edi, 0x7a9aac84
            0xd2bc4d: mov -0x28(%edi), %eax
            0xd2bc50: mov -0x18(%eax), %edx
            0xd2bc53: mov 0xfffffffb, -0x14(%edi)
            0xd2bc5a: mov %edx, -0x18(%edi)
            0xd2bc5d: mov (%esp), %edx
            0xd2bc60: mov %edx, -0x10(%edi)
            0xd2bc63: mov %edi, %ecx
            0xd2bc65: sub 0xc, %esp
            0xd2bc68: mov %eax, %edi
            0xd2bc6a: call 0x8ffa0
            0xd2bc6f: add 0xc, %esp
            0xd2bc72: cmp 0xfa, 0x7a9aba70
            0xd2bc79: jnz 0xd2bc80
            0xd2bc7f: ret 
            0xd2bc80: pop %edx
            0xd2bc81: mov 0x7a9aba84, %ecx
            0xd2bc86: mov %edx, (%ecx)
            0xd2bc88: mov %edi, 0x58(%esp)
            0xd2bc8c: mov %edi, 0x7a9aac84
            0xd2bc92: mov 0x3189a9, %edx
            0xd2bc97: push %edx
            0xd2bc98: ret 
Generated JIT code for JIT CTI native call:
    Code at [0xd2bca0, 0xd2bd00):
            0xd2bca0: mov 0x0, -0x8(%edi)
            0xd2bca7: mov %edi, 0x7a9aac84
            0xd2bcad: mov -0x28(%edi), %eax
            0xd2bcb0: mov -0x18(%eax), %edx
            0xd2bcb3: mov 0xfffffffb, -0x14(%edi)
            0xd2bcba: mov %edx, -0x18(%edi)
            0xd2bcbd: mov (%esp), %edx
            0xd2bcc0: mov %edx, -0x10(%edi)
            0xd2bcc3: mov %edi, %ecx
            0xd2bcc5: sub 0xc, %esp
            0xd2bcc8: mov %eax, %edi
            0xd2bcca: call 0x90140
            0xd2bccf: add 0xc, %esp
            0xd2bcd2: cmp 0xfa, 0x7a9aba70
            0xd2bcd9: jnz 0xd2bce0
            0xd2bcdf: ret 
            0xd2bce0: pop %edx
            0xd2bce1: mov 0x7a9aba84, %ecx
            0xd2bce6: mov %edx, (%ecx)
            0xd2bce8: mov %edi, 0x58(%esp)
            0xd2bcec: mov %edi, 0x7a9aac84
            0xd2bcf2: mov 0x3189a9, %edx
            0xd2bcf7: push %edx
            0xd2bcf8: ret 
Generated JIT code for LLInt program prologue thunk:
    Code at [0xd2bd00, 0xd2bd20):
            0xd2bd00: mov 0x5032cd, %eax
            0xd2bd05: jmp %eax
Generated JIT code for LLInt function for call prologue thunk:
    Code at [0xd2bd20, 0xd2bd40):
            0xd2bd20: mov 0x50333d, %eax
            0xd2bd25: jmp %eax
Generated JIT code for LLInt function for call with arity check prologue thunk:
    Code at [0xd2bd40, 0xd2bd60):
            0xd2bd40: mov 0x5034b2, %eax
            0xd2bd45: jmp %eax
Generated JIT code for JIT CTI native call:
    Code at [0xd2bd60, 0xd2bdc0):
            0xd2bd60: mov 0x0, -0x8(%edi)
            0xd2bd67: mov %edi, 0x7a9aac84
            0xd2bd6d: mov -0x28(%edi), %eax
            0xd2bd70: mov -0x18(%eax), %edx
            0xd2bd73: mov 0xfffffffb, -0x14(%edi)
            0xd2bd7a: mov %edx, -0x18(%edi)
            0xd2bd7d: mov (%esp), %edx
            0xd2bd80: mov %edx, -0x10(%edi)
            0xd2bd83: mov %edi, %ecx
            0xd2bd85: sub 0xc, %esp
            0xd2bd88: mov %eax, %edi
            0xd2bd8a: call 0x19a2d0
            0xd2bd8f: add 0xc, %esp
            0xd2bd92: cmp 0xfa, 0x7a9aba70
            0xd2bd99: jnz 0xd2bda0
            0xd2bd9f: ret 
            0xd2bda0: pop %edx
            0xd2bda1: mov 0x7a9aba84, %ecx
            0xd2bda6: mov %edx, (%ecx)
            0xd2bda8: mov %edi, 0x58(%esp)
            0xd2bdac: mov %edi, 0x7a9aac84
            0xd2bdb2: mov 0x3189a9, %edx
            0xd2bdb7: push %edx
            0xd2bdb8: ret 
Generated JIT code for Baseline JIT code for CodeBlock 0x7b9b4c00:
    Code at [0xd2bdc0, 0xd2bfc0):
            0xd2bdc0: pop %ecx
            0xd2bdc1: mov %ecx, -0x10(%edi)
            0xd2bdc4: mov 0x7b9b4c00, -0x8(%edi)
            0xd2bdcb: mov -0x38(%edi), %eax
            0xd2bdce: mov -0x34(%edi), %edx
            0xd2bdd1: mov %eax, 0x7b013d68
            0xd2bdd6: mov %edx, 0x7b013d6c
            0xd2bddc: mov -0x40(%edi), %eax
            0xd2bddf: mov -0x3c(%edi), %edx
            0xd2bde2: mov %eax, 0x7b013d90
            0xd2bde7: mov %edx, 0x7b013d94
            0xd2bded: mov -0x48(%edi), %eax
            0xd2bdf0: mov -0x44(%edi), %edx
            0xd2bdf3: mov %eax, 0x7b013db8
            0xd2bdf8: mov %edx, 0x7b013dbc
            0xd2bdfe: mov -0x50(%edi), %eax
            0xd2be01: mov -0x4c(%edi), %edx
            0xd2be04: mov %eax, 0x7b013de0
            0xd2be09: mov %edx, 0x7b013de4
            0xd2be0f: lea 0x58(%edi), %edx
            0xd2be12: cmp %edx, 0x7b1118ac
            0xd2be18: jb 0xd2bf5c
            0xd2be1e: add 0x1, 0x7b9b51b8
            0xd2be25: mov 0x117fb40, %eax
            0xd2be2a: mov 0x7b015e60, %ebx
            0xd2be2f: mov (%ebx), %edx
            0xd2be31: cmp 0x4(%eax), %edx
            0xd2be34: jnz 0xd2bf07
            0xd2be3a: mov 0x8(%eax), %ecx
            0xd2be3d: mov 0x4(%ebx), %ebx
            0xd2be40: mov (%ecx,%ebx,8), %eax
            0xd2be43: mov 0x4(%ecx,%ebx,8), %edx
            0xd2be47: mov %eax, 0x7b9b4e4c
            0xd2be4c: mov %edx, 0x7b9b4e50
            0xd2be52: mov %eax, (%edi)
            0xd2be54: mov %edx, 0x4(%edi)
            0xd2be57: mov -0x40(%edi), %eax
            0xd2be5a: mov -0x3c(%edi), %edx
            0xd2be5d: mov %eax, 0x18(%edi)
            0xd2be60: mov %edx, 0x1c(%edi)
            0xd2be63: mov -0x48(%edi), %eax
            0xd2be66: mov -0x44(%edi), %edx
            0xd2be69: mov %eax, 0x10(%edi)
            0xd2be6c: mov %edx, 0x14(%edi)
            0xd2be6f: mov -0x50(%edi), %eax
            0xd2be72: mov -0x4c(%edi), %edx
            0xd2be75: mov %eax, 0x8(%edi)
            0xd2be78: mov %edx, 0xc(%edi)
            0xd2be7b: lea 0x58(%edi), %ebx
            0xd2be7e: mov 0x4, -0x30(%ebx)
            0xd2be85: mov 0x7b011ff8, -0x2c(%edi)
            0xd2be8c: mov (%edi), %eax
            0xd2be8e: mov 0x4(%edi), %edx
            0xd2be91: mov %edi, -0x28(%ebx)
            0xd2be94: mov %eax, -0x20(%ebx)
            0xd2be97: mov %edx, -0x1c(%ebx)
            0xd2be9a: mov %ebx, %edi
            0xd2be9c: cmp 0x0, %eax
            0xd2bea2: jnz 0xd2bf4b
            0xd2bea8: cmp 0xfb, %edx
            0xd2beab: jnz 0xd2bf4b
            0xd2beb1: mov 0x34(%eax), %edx
            0xd2beb4: mov 0xfffffffb, -0x14(%edi)
            0xd2bebb: mov %edx, -0x18(%edi)
            0xd2bebe: call 0xd2bec3
            0xd2bec3: mov %eax, 0x7b9b4e74
            0xd2bec8: mov %edx, 0x7b9b4e78
            0xd2bece: mov %eax, 0x28(%edi)
            0xd2bed1: mov %edx, 0x2c(%edi)
            0xd2bed4: add 0xf, 0x7b9b5218
            0xd2bedb: js 0xd2bef9
            0xd2bee1: mov %esp, %ecx
            0xd2bee3: mov %edi, 0x58(%esp)
            0xd2bee7: mov 0x7b012020, -0x2c(%edi)
            0xd2beee: mov %edi, 0x7a9aac84
            0xd2bef4: call 0x31edb0
            0xd2bef9: mov 0x28(%edi), %eax
            0xd2befc: mov 0x2c(%edi), %edx
            0xd2beff: mov -0x10(%edi), %ecx
            0xd2bf02: mov -0x28(%edi), %edi
            0xd2bf05: push %ecx
            0xd2bf06: ret 
            0xd2bf07: mov 0x7b011800, 0x4(%esp)
            0xd2bf0f: mov 0x0, 0xc(%esp)
            0xd2bf17: mov %esp, %ecx
            0xd2bf19: mov %edi, 0x58(%esp)
            0xd2bf1d: mov 0x7b011fc0, -0x2c(%edi)
            0xd2bf24: mov %edi, 0x7a9aac84
            0xd2bf2a: call 0x322ae0
            0xd2bf2f: mov %eax, 0x7b9b4e4c
            0xd2bf34: mov %edx, 0x7b9b4e50
            0xd2bf3a: mov %eax, (%edi)
            0xd2bf3c: mov %edx, 0x4(%edi)
            0xd2bf3f: add 0x1, 0x7b9b5014
            0xd2bf46: jmp 0xd2be57
            0xd2bf4b: call 0xd2b070
            0xd2bf50: add 0x1, 0x7b9b501c
            0xd2bf57: jmp 0xd2bec3
            0xd2bf5c: mov %esp, %ecx
            0xd2bf5e: mov %edi, 0x58(%esp)
            0xd2bf62: mov %edi, 0x7a9aac84
            0xd2bf68: call 0x31b0d0
            0xd2bf6d: jmp 0xd2be1e
            0xd2bf72: pop %ecx
            0xd2bf73: mov %ecx, -0x10(%edi)
            0xd2bf76: mov 0x7b9b4c00, -0x8(%edi)
            0xd2bf7d: mov -0x30(%edi), %edx
            0xd2bf80: cmp 0x4, %edx
            0xd2bf83: jae 0xd2bdcb
            0xd2bf89: mov %esp, %ecx
            0xd2bf8b: mov %edi, 0x58(%esp)
            0xd2bf8f: mov %edi, 0x7a9aac84
            0xd2bf95: call 0x31fa50
            0xd2bf9a: mov %eax, %edi
            0xd2bf9c: jmp 0xd2bdcb
Generated JIT code for LLInt function for construct prologue thunk:
    Code at [0xd2bfc0, 0xd2bfe0):
            0xd2bfc0: mov 0x5033f6, %eax
            0xd2bfc5: jmp %eax
Generated JIT code for LLInt function for construct with arity check prologue thunk:
    Code at [0xd2bfe0, 0xd2c000):
            0xd2bfe0: mov 0x503534, %eax
            0xd2bfe5: jmp %eax
Generated JIT code for Specialized thunk for abs:
    Code at [0xd2c000, 0xd2c0a0):
            0xd2c000: cmp 0x2, -0x30(%edi)
            0xd2c004: jnz 0xd2b1b0
            0xd2c00a: mov -0x40(%edi), %eax
            0xd2c00d: cmp 0xff, -0x3c(%edi)
            0xd2c011: jnz 0xd2c035
            0xd2c017: mov %eax, %edx
            0xd2c019: sar 0x1f, %edx
            0xd2c01c: add %edx, %eax
            0xd2c01e: xor %edx, %eax
            0xd2c020: cmp 0x80000000, %eax
            0xd2c026: jz 0xd2b1b0
            0xd2c02c: mov 0xffffffff, %edx
            0xd2c031: mov -0x28(%edi), %edi
            0xd2c034: ret 
            0xd2c035: mov -0x3c(%edi), %eax
            0xd2c038: cmp 0xf9, %eax
            0xd2c03b: jb 0xd2c056
            0xd2c041: cmp 0xff, %eax
            0xd2c044: jnz 0xd2b1b0
            0xd2c04a: mov -0x40(%edi), %eax
            0xd2c04d: cvtsi2sd %eax, %xmm0
            0xd2c051: jmp 0xd2c05b
            0xd2c056: movsd -0x40(%edi), %xmm0
            0xd2c05b: movsd 0x630ae8, %xmm1
            0xd2c063: andnpd %xmm0, %xmm1
            0xd2c067: movsd %xmm1, -0x8(%esp)
            0xd2c06d: mov -0x4(%esp), %edx
            0xd2c071: mov -0x8(%esp), %eax
            0xd2c075: test %edx, %edx
            0xd2c077: jnz 0xd2c08c
            0xd2c07d: test %eax, %eax
            0xd2c07f: jnz 0xd2c08c
            0xd2c085: xor %eax, %eax
            0xd2c087: mov 0xffffffff, %edx
            0xd2c08c: mov -0x28(%edi), %edi
            0xd2c08f: ret 
Generated JIT code for Specialized thunk for sqrt:
    Code at [0xd2c0a0, 0xd2c100):
            0xd2c0a0: cmp 0x2, -0x30(%edi)
            0xd2c0a4: jnz 0xd2b1b0
            0xd2c0aa: mov -0x3c(%edi), %eax
            0xd2c0ad: cmp 0xf9, %eax
            0xd2c0b0: jb 0xd2c0cb
            0xd2c0b6: cmp 0xff, %eax
            0xd2c0b9: jnz 0xd2b1b0
            0xd2c0bf: mov -0x40(%edi), %eax
            0xd2c0c2: cvtsi2sd %eax, %xmm0
            0xd2c0c6: jmp 0xd2c0d0
            0xd2c0cb: movsd -0x40(%edi), %xmm0
            0xd2c0d0: sqrtsd %xmm0, %xmm0
            0xd2c0d4: movsd %xmm0, -0x8(%esp)
            0xd2c0da: mov -0x4(%esp), %edx
            0xd2c0de: mov -0x8(%esp), %eax
            0xd2c0e2: test %edx, %edx
            0xd2c0e4: jnz 0xd2c0f9
            0xd2c0ea: test %eax, %eax
            0xd2c0ec: jnz 0xd2c0f9
            0xd2c0f2: xor %eax, %eax
            0xd2c0f4: mov 0xffffffff, %edx
            0xd2c0f9: mov -0x28(%edi), %edi
            0xd2c0fc: ret 
Generated JIT code for String get_by_val stub:
    Code at [0xd2c100, 0xd2c160):
            0xd2c100: cmp 0x669324, (%eax)
            0xd2c106: jnz 0xd2c15b
            0xd2c10c: mov 0xc(%eax), %edx
            0xd2c10f: mov 0x10(%eax), %eax
            0xd2c112: test %eax, %eax
            0xd2c114: jz 0xd2c15b
            0xd2c11a: cmp %edx, %ecx
            0xd2c11c: jae 0xd2c15b
            0xd2c122: mov 0x10(%eax), %edx
            0xd2c125: mov 0x8(%eax), %eax
            0xd2c128: test 0x40, %edx
            0xd2c12e: jz 0xd2c13d
            0xd2c134: movzx (%eax,%ecx), %eax
            0xd2c138: jmp 0xd2c141
            0xd2c13d: movzx (%eax,%ecx,2), %eax
            0xd2c141: cmp 0x100, %eax
            0xd2c147: jae 0xd2c15b
            0xd2c14d: mov 0x7a9aad58, %edx
            0xd2c152: mov (%edx,%eax,4), %eax
            0xd2c155: mov 0xfffffffb, %edx
            0xd2c15a: ret 
            0xd2c15b: xor %eax, %eax
            0xd2c15d: ret</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653061</commentid>
    <comment_count>2</comment_count>
      <attachid>148476</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-19 17:57:46 -0700</bug_when>
    <thetext>Created attachment 148476
patch for landing

The previous one wasn&apos;t properly rebased so I&apos;ve rebased this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653063</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 18:00:19 -0700</bug_when>
    <thetext>Attachment 148476 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/assembler/LinkBuffer.h:234:  The parameter name &quot;effort&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/assembler/LinkBuffer.h:243:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/disassembler/Disassembler.h:38:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653075</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-19 18:33:55 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/120786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653224</commentid>
    <comment_count>5</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-06-19 22:55:21 -0700</bug_when>
    <thetext>This patch broke CMake build. disassembler/ folder should have been added to the include path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653225</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-19 22:58:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This patch broke CMake build. disassembler/ folder should have been added to the include path.

It was added to the include paths in a bunch of CMake files.  In a previous commit.  Can you add it to wherever it needs to be added?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148472</attachid>
            <date>2012-06-19 17:41:09 -0700</date>
            <delta_ts>2012-06-19 17:57:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>disassembly_patch_1.diff</filename>
            <type>text/plain</type>
            <size>65619</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNzc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBA
QAorMjAxMi0wNi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byBzaG93IGRpc2Fzc2VtYmx5IGZvciBhbGwgZ2VuZXJhdGVk
IEpJVCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgTm93IGluc3RlYWQgb2YgZG9pbmcgbGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSwg
eW91IGRvCisgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKC4uLiBleHBsYW5hdGlv
biAuLi4pKS4gRklOQUxJWkVfQ09ERSgpIHRoZW4KKyAgICAgICAgcHJpbnRzIHlvdXIgZXhwbGFu
YXRpb24gYW5kIHRoZSBkaXNhc3NlbWJsZWQgY29kZSwgaWYKKyAgICAgICAgT3B0aW9uczo6c2hv
d0Rpc2Fzc2VtYmx5IGlzIHNldCB0byB0cnVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0aG91
dERpc2Fzc2VtYmx5KToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0
aERpc2Fzc2VtYmx5KToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGlua0NvZGUpOgorICAg
ICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKToKKyAgICAgICAgKEpT
Qzo6TGlua0J1ZmZlcjo6ZHVtcExpbmtTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6TGlua0J1
ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQ
cm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlE
KToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRU
cmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
dHJ5VG9EaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjp0cnlUb0Rpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGlu
ZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2
ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZENoYWluKToKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L1RodW5r
R2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6ZnJv
bUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzcXJ0VGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpmbG9vclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Y2VpbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cm91bmRUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OmV4cFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bG9nVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphYnNUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OnBvd1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25z
KToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAq
IHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogeWFyci9Z
YXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6
CisKIDIwMTItMDYtMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBbUXRdW01hY10gUkVHUkVTU0lPTihyMTIwNzQyKTogSXQgYnJva2UgdGhlIGJ1
aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjA3
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDggQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBBUEkv
SlNWYWx1ZVJlZi5jcHAKICAgICBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKICAg
ICBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwCisgICAgCisgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCiAKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gMTIwNzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJC
dWZmZXJXaXRoQ29uc3RhbnRQb29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQ29kZUxvY2F0aW9uLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjA3NjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwIFwKICAgICBh
c3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBcCiAgICAgYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVy
LmNwcCBcCisgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIFwKICAgICBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3Bw
IFwKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lv
biAxMjA3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTczOCw2ICsxNzM4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGFzc2VtYmxlclxMaW5rQnVmZmVyLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYXNzZW1ibGVyXExpbmtCdWZm
ZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTIwNzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsy
MDgsNyBAQAogCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjczRTE1OEVCRDk0MDA0
Q0I5RkYgLyogdWRpczg2LmMgKi87IH07CiAJCTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAvKiB1
ZGlzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjQyNzNGMTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODYuaCAqLzsgfTsKIAkJMEZGNDI3NEQxNThF
QkZFNjAwNENCOUZGIC8qIHVkaXM4Nl9pdGFiX2hvbGRlci5jIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NEMxNThFQkZFMTAwNENCOUZGIC8qIHVk
aXM4Nl9pdGFiX2hvbGRlci5jICovOyB9OworCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYgLyog
TGlua0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY0Mjc1NjE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi87IH07CiAJ
CTBGRjkyMkQ0MTRGNDZCNDEwMDQxQTI0RSAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CiAJCTBGRkZD
OTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZH
Q0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjcsNiArOTI4LDcgQEAKIAkJ
MEZGNDI3M0UxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Ni5jICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmM7IG5hbWUgPSB1ZGlzODYuYzsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2
LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzNGMTU4RUJEOTQwMDRDQjlG
RiAvKiB1ZGlzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdWRpczg2Lmg7
IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkY0Mjc0QzE1OEVCRkUxMDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVy
LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHVkaXM4Nl9pdGFiX2hvbGRlci5j
OyBwYXRoID0gZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfaXRhYl9ob2xkZXIuYzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3NTYxNTkxNEEyMDAwNENCOUZGIC8qIExpbmtC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0J1ZmZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQx
QTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjk1
LDYgKzIyOTcsNyBAQAogCQkJCTk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJC
dWZmZXIuaCAqLywKIAkJCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVm
ZmVyV2l0aENvbnN0YW50UG9vbC5oICovLAogCQkJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCAqLywKKwkJCQkwRkY0Mjc1NjE1OTE0QTIwMDA0Q0I5RkYgLyogTGlu
a0J1ZmZlci5jcHAgKi8sCiAJCQkJODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZm
ZXIuaCAqLywKIAkJCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCAqLywKIAkJCQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwICovLApAQCAtMzM0MSw2ICszMzQ0LDcgQEAKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5
RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0RDE1OEVCRkU2MDA0Q0I5
RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNlcyAqLywKIAkJCQlDMkU1MjZCRDE1
OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjQy
NzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlICJPcHRp
b25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitMaW5rQnVmZmVyOjpDb2RlUmVmIExpbmtCdWZm
ZXI6OmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpCit7CisgICAgcGVyZm9ybUZpbmFs
aXphdGlvbigpOworICAgIAorICAgIHJldHVybiBDb2RlUmVmKG1fZXhlY3V0YWJsZU1lbW9yeSk7
Cit9CisKK0xpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0aERp
c2Fzc2VtYmx5KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworICAgIEFTU0VSVChPcHRpb25z
OjpzaG93RGlzYXNzZW1ibHkpOworICAgIAorICAgIENvZGVSZWYgcmVzdWx0ID0gZmluYWxpemVD
b2RlV2l0aG91dERpc2Fzc2VtYmx5KCk7CisgICAgCisgICAgZGF0YUxvZygiR2VuZXJhdGVkIEpJ
VCBjb2RlIGZvciAiKTsKKyAgICB2YV9saXN0IGFyZ0xpc3Q7CisgICAgdmFfc3RhcnQoYXJnTGlz
dCwgZm9ybWF0KTsKKyAgICBXVEY6OmRhdGFMb2dWKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFf
ZW5kKGFyZ0xpc3QpOworICAgIGRhdGFMb2coIjpcbiIpOworICAgIAorICAgIGRhdGFMb2coIiAg
ICBDb2RlIGF0IFslcCwgJXApOlxuIiwgcmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSAr
IHJlc3VsdC5zaXplKCkpOworICAgIGlmICghdHJ5VG9EaXNhc3NlbWJsZShyZXN1bHQuY29kZSgp
LCBtX3NpemUsICIgICAgIiwgV1RGOjpkYXRhRmlsZSgpKSkKKyAgICAgICAgZGF0YUxvZygiICAg
ICAgICA8bm8gZGlzYXNzZW1ibHkgYXZhaWxhYmxlPiIpOworICAgIAorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgTGlua0J1ZmZlcjo6bGlua0NvZGUodm9pZCogb3duZXJVSUQsIEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKK3sKKyAgICBBU1NFUlQoIW1fY29kZSk7CisjaWYgIUVO
QUJMRShCUkFOQ0hfQ09NUEFDVElPTikKKyAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX2Fzc2Vt
Ymxlci0+bV9hc3NlbWJsZXIuZXhlY3V0YWJsZUNvcHkoKm1fZ2xvYmFsRGF0YSwgb3duZXJVSUQs
IGVmZm9ydCk7CisgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NvZGUgPSBtX2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCk7CisgICAgbV9zaXplID0g
bV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmNvZGVTaXplKCk7CisgICAgQVNTRVJUKG1fY29kZSk7
CisjZWxzZQorICAgIG1faW5pdGlhbFNpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29k
ZVNpemUoKTsKKyAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX2dsb2JhbERhdGEtPmV4ZWN1dGFi
bGVBbGxvY2F0b3IuYWxsb2NhdGUoKm1fZ2xvYmFsRGF0YSwgbV9pbml0aWFsU2l6ZSwgb3duZXJV
SUQsIGVmZm9ydCk7CisgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NvZGUgPSAodWludDhfdCopbV9leGVjdXRhYmxlTWVtb3J5LT5zdGFydCgpOwor
ICAgIEFTU0VSVChtX2NvZGUpOworICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1ha2VXcml0YWJs
ZShtX2NvZGUsIG1faW5pdGlhbFNpemUpOworICAgIHVpbnQ4X3QqIGluRGF0YSA9ICh1aW50OF90
KiltX2Fzc2VtYmxlci0+dW5saW5rZWRDb2RlKCk7CisgICAgdWludDhfdCogb3V0RGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1fY29kZSk7CisgICAgaW50IHJlYWRQdHIgPSAwOwor
ICAgIGludCB3cml0ZVB0ciA9IDA7CisgICAgVmVjdG9yPExpbmtSZWNvcmQ+JiBqdW1wc1RvTGlu
ayA9IG1fYXNzZW1ibGVyLT5qdW1wc1RvTGluaygpOworICAgIHVuc2lnbmVkIGp1bXBDb3VudCA9
IGp1bXBzVG9MaW5rLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENv
dW50OyArK2kpIHsKKyAgICAgICAgaW50IG9mZnNldCA9IHJlYWRQdHIgLSB3cml0ZVB0cjsKKyAg
ICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMSkpOworICAgICAgICAgICAgCisgICAgICAgIC8vIENv
cHkgdGhlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBsYXN0IGp1bXAgdG8gdGhlIGN1cnJlbnQgb25l
LgorICAgICAgICBzaXplX3QgcmVnaW9uU2l6ZSA9IGp1bXBzVG9MaW5rW2ldLmZyb20oKSAtIHJl
YWRQdHI7CisgICAgICAgIHVpbnQxNl90KiBjb3B5U291cmNlID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDE2X3QqPihpbkRhdGEgKyByZWFkUHRyKTsKKyAgICAgICAgdWludDE2X3QqIGNvcHlF
bmQgPSByZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGluRGF0YSArIHJlYWRQdHIgKyBy
ZWdpb25TaXplKTsKKyAgICAgICAgdWludDE2X3QqIGNvcHlEc3QgPSByZWludGVycHJldF9jYXN0
X3B0cjx1aW50MTZfdCo+KG91dERhdGEgKyB3cml0ZVB0cik7CisgICAgICAgIEFTU0VSVCghKHJl
Z2lvblNpemUgJSAyKSk7CisgICAgICAgIEFTU0VSVCghKHJlYWRQdHIgJSAyKSk7CisgICAgICAg
IEFTU0VSVCghKHdyaXRlUHRyICUgMikpOworICAgICAgICB3aGlsZSAoY29weVNvdXJjZSAhPSBj
b3B5RW5kKQorICAgICAgICAgICAgKmNvcHlEc3QrKyA9ICpjb3B5U291cmNlKys7CisgICAgICAg
IG1fYXNzZW1ibGVyLT5yZWNvcmRMaW5rT2Zmc2V0cyhyZWFkUHRyLCBqdW1wc1RvTGlua1tpXS5m
cm9tKCksIG9mZnNldCk7CisgICAgICAgIHJlYWRQdHIgKz0gcmVnaW9uU2l6ZTsKKyAgICAgICAg
d3JpdGVQdHIgKz0gcmVnaW9uU2l6ZTsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBDYWxjdWxh
dGUgYWJzb2x1dGUgYWRkcmVzcyBvZiB0aGUganVtcCB0YXJnZXQsIGluIHRoZSBjYXNlIG9mIGJh
Y2t3YXJkcworICAgICAgICAvLyBicmFuY2hlcyB3ZSBuZWVkIHRvIGJlIHByZWNpc2UsIGZvcndh
cmQgYnJhbmNoZXMgd2UgYXJlIHBlc3NpbWlzdGljCisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHRh
cmdldDsKKyAgICAgICAgaWYgKGp1bXBzVG9MaW5rW2ldLnRvKCkgPj0ganVtcHNUb0xpbmtbaV0u
ZnJvbSgpKQorICAgICAgICAgICAgdGFyZ2V0ID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLnRv
KCkgLSBvZmZzZXQ7IC8vIENvbXBlbnNhdGUgZm9yIHdoYXQgd2UgaGF2ZSBjb2xsYXBzZWQgc28g
ZmFyCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1Rv
TGlua1tpXS50bygpIC0gbV9hc3NlbWJsZXItPmV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xp
bmtbaV0udG8oKSk7CisgICAgICAgICAgICAKKyAgICAgICAgSnVtcExpbmtUeXBlIGp1bXBMaW5r
VHlwZSA9IG1fYXNzZW1ibGVyLT5jb21wdXRlSnVtcFR5cGUoanVtcHNUb0xpbmtbaV0sIG91dERh
dGEgKyB3cml0ZVB0ciwgdGFyZ2V0KTsKKyAgICAgICAgLy8gQ29tcGFjdCBicmFuY2ggaWYgd2Ug
Y2FuLi4uCisgICAgICAgIGlmIChtX2Fzc2VtYmxlci0+Y2FuQ29tcGFjdChqdW1wc1RvTGlua1tp
XS50eXBlKCkpKSB7CisgICAgICAgICAgICAvLyBTdGVwIGJhY2sgaW4gdGhlIHdyaXRlIHN0cmVh
bQorICAgICAgICAgICAgaW50MzJfdCBkZWx0YSA9IG1fYXNzZW1ibGVyLT5qdW1wU2l6ZURlbHRh
KGp1bXBzVG9MaW5rW2ldLnR5cGUoKSwganVtcExpbmtUeXBlKTsKKyAgICAgICAgICAgIGlmIChk
ZWx0YSkgeworICAgICAgICAgICAgICAgIHdyaXRlUHRyIC09IGRlbHRhOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLT5yZWNvcmRMaW5rT2Zmc2V0cyhqdW1wc1RvTGlua1tpXS5mcm9tKCkg
LSBkZWx0YSwgcmVhZFB0ciwgcmVhZFB0ciAtIHdyaXRlUHRyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBqdW1wc1RvTGlua1tpXS5zZXRGcm9tKHdyaXRlUHRyKTsKKyAgICB9
CisgICAgLy8gQ29weSBldmVyeXRoaW5nIGFmdGVyIHRoZSBsYXN0IGp1bXAKKyAgICBtZW1jcHko
b3V0RGF0YSArIHdyaXRlUHRyLCBpbkRhdGEgKyByZWFkUHRyLCBtX2luaXRpYWxTaXplIC0gcmVh
ZFB0cik7CisgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtPZmZzZXRzKHJlYWRQdHIsIG1faW5p
dGlhbFNpemUsIHJlYWRQdHIgLSB3cml0ZVB0cik7CisgICAgICAgIAorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkgeworICAgICAgICB1aW50OF90KiBsb2NhdGlv
biA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9tKCk7CisgICAgICAgIHVpbnQ4X3QqIHRh
cmdldCA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gbV9hc3NlbWJsZXItPmV4ZWN1
dGFibGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0udG8oKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LT5saW5rKGp1bXBzVG9MaW5rW2ldLCBsb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBq
dW1wc1RvTGluay5jbGVhcigpOworICAgIG1fc2l6ZSA9IHdyaXRlUHRyICsgbV9pbml0aWFsU2l6
ZSAtIHJlYWRQdHI7CisgICAgbV9leGVjdXRhYmxlTWVtb3J5LT5zaHJpbmsobV9zaXplKTsKKwor
I2lmIERVTVBfTElOS19TVEFUSVNUSUNTCisgICAgZHVtcExpbmtTdGF0aXN0aWNzKG1fY29kZSwg
bV9pbml0aWFsU2l6ZSwgbV9zaXplKTsKKyNlbmRpZgorI2lmIERVTVBfQ09ERQorICAgIGR1bXBD
b2RlKG1fY29kZSwgbV9zaXplKTsKKyNlbmRpZgorI2VuZGlmCit9CisKK3ZvaWQgTGlua0J1ZmZl
cjo6cGVyZm9ybUZpbmFsaXphdGlvbigpCit7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCgh
bV9jb21wbGV0ZWQpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIG1fY29tcGxldGVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIAorI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKKyAgICBF
eGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlRXhlY3V0YWJsZShjb2RlKCksIG1faW5pdGlhbFNpemUp
OworI2Vsc2UKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlRXhlY3V0YWJsZShjb2RlKCks
IG1fc2l6ZSk7CisjZW5kaWYKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Y2FjaGVGbHVzaChjb2RlKCks
IG1fc2l6ZSk7Cit9CisKKyNpZiBEVU1QX0xJTktfU1RBVElTVElDUwordm9pZCBMaW5rQnVmZmVy
OjpkdW1wTGlua1N0YXRpc3RpY3Modm9pZCogY29kZSwgc2l6ZV90IGluaXRpYWxpemVTaXplLCBz
aXplX3QgZmluYWxTaXplKQoreworICAgIHN0YXRpYyB1bnNpZ25lZCBsaW5rQ291bnQgPSAwOwor
ICAgIHN0YXRpYyB1bnNpZ25lZCB0b3RhbEluaXRpYWxTaXplID0gMDsKKyAgICBzdGF0aWMgdW5z
aWduZWQgdG90YWxGaW5hbFNpemUgPSAwOworICAgIGxpbmtDb3VudCsrOworICAgIHRvdGFsSW5p
dGlhbFNpemUgKz0gaW5pdGlhbFNpemU7CisgICAgdG90YWxGaW5hbFNpemUgKz0gZmluYWxTaXpl
OworICAgIGRhdGFMb2coImxpbmsgJXA6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAl
LjJmJSUpXG4iLCAKKyAgICAgICAgICAgIGNvZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0
aWFsU2l6ZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaW5hbFNpemUpLAorICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxTaXplIC0gZmluYWxTaXplKSwKKyAgICAgICAg
ICAgIDEwMC4wICogKGluaXRpYWxTaXplIC0gZmluYWxTaXplKSAvIGluaXRpYWxTaXplKTsKKyAg
ICBkYXRhTG9nKCJcdHRvdGFsICV1OiBvcmlnICV1LCBjb21wYWN0ICV1IChkZWx0YSAldSwgJS4y
ZiUlKVxuIiwgCisgICAgICAgICAgICBsaW5rQ291bnQsIHRvdGFsSW5pdGlhbFNpemUsIHRvdGFs
RmluYWxTaXplLCB0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUsCisgICAgICAgICAg
ICAxMDAuMCAqICh0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUpIC8gdG90YWxJbml0
aWFsU2l6ZSk7Cit9CisjZW5kaWYKKworI2lmIERVTVBfQ09ERQordm9pZCBMaW5rQnVmZmVyOjpk
dW1wQ29kZSh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKK3sKKyNpZiBDUFUoQVJNX1RIVU1CMikK
KyAgICAvLyBEdW1wIHRoZSBnZW5lcmF0ZWQgY29kZSBpbiBhbiBhc20gZmlsZSBmb3JtYXQgdGhh
dCBjYW4gYmUgYXNzZW1ibGVkIGFuZCB0aGVuIGRpc2Fzc2VtYmxlZAorICAgIC8vIGZvciBkZWJ1
Z2dpbmcgcHVycG9zZXMuIEZvciBleGFtcGxlLCBzYXZlIHRoaXMgb3V0cHV0IGFzIGppdC5zOgor
ICAgIC8vICAgZ2NjIC1hcmNoIGFybXY3IC1jIGppdC5zCisgICAgLy8gICBvdG9vbCAtdHYgaml0
Lm8KKyAgICBzdGF0aWMgdW5zaWduZWQgY29kZUNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBzaG9y
dCogdGNvZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KGNvZGUpOworICAgIHNpemVf
dCB0c2l6ZSA9IHNpemUgLyBzaXplb2Yoc2hvcnQpOworICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwor
ICAgIHNucHJpbnRmKG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2Rl
Q291bnQrKyk7CisgICAgZGF0YUxvZygiXHQuc3ludGF4IHVuaWZpZWRcbiIKKyAgICAgICAgICAg
ICJcdC5zZWN0aW9uXHRfX1RFWFQsX190ZXh0LHJlZ3VsYXIscHVyZV9pbnN0cnVjdGlvbnNcbiIK
KyAgICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKKyAgICAgICAgICAgICJcdC5hbGlnbiAyXG4i
CisgICAgICAgICAgICAiXHQuY29kZSAxNlxuIgorICAgICAgICAgICAgIlx0LnRodW1iX2Z1bmNc
dCVzXG4iCisgICAgICAgICAgICAiIyAlcFxuIgorICAgICAgICAgICAgIiVzOlxuIiwgbmFtZUJ1
ZiwgbmFtZUJ1ZiwgY29kZSwgbmFtZUJ1Zik7CisgICAgICAgIAorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0c2l6ZTsgaSsrKQorICAgICAgICBkYXRhTG9nKCJcdC5zaG9ydFx0MHgleFxu
IiwgdGNvZGVbaV0pOworI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICAvLyAgIGdjYyAt
YyBqaXQucworICAgIC8vICAgb2JqZHVtcCAtRCBqaXQubworICAgIHN0YXRpYyB1bnNpZ25lZCBj
b2RlQ291bnQgPSAwOworICAgIHVuc2lnbmVkIGludCogdGNvZGUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQqPihjb2RlKTsKKyAgICBzaXplX3QgdHNpemUgPSBzaXplIC8gc2l6ZW9mKHVuc2ln
bmVkIGludCk7CisgICAgY2hhciBuYW1lQnVmWzEyOF07CisgICAgc25wcmludGYobmFtZUJ1Ziwg
c2l6ZW9mKG5hbWVCdWYpLCAiX2pzY19qaXQldSIsIGNvZGVDb3VudCsrKTsKKyAgICBkYXRhTG9n
KCJcdC5nbG9ibFx0JXNcbiIKKyAgICAgICAgICAgICJcdC5hbGlnbiA0XG4iCisgICAgICAgICAg
ICAiXHQuY29kZSAzMlxuIgorICAgICAgICAgICAgIlx0LnRleHRcbiIKKyAgICAgICAgICAgICIj
ICVwXG4iCisgICAgICAgICAgICAiJXM6XG4iLCBuYW1lQnVmLCBjb2RlLCBuYW1lQnVmKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0c2l6ZTsgaSsrKQorICAgICAgICBkYXRhTG9n
KCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtpXSk7CisjZW5kaWYKK30KKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKS5tX29mZnNldDsKICAgICB9
CiAKLSAgICAvLyBVcG9uIGNvbXBsZXRpb24gb2YgYWxsIHBhdGNoaW5nICdmaW5hbGl6ZUNvZGUo
KScgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHRvIGNvbXBsZXRlIGdlbmVyYXRpb24gb2YgdGhlIGNv
ZGUuCi0gICAgQ29kZVJlZiBmaW5hbGl6ZUNvZGUoKQotICAgIHsKLSAgICAgICAgcGVyZm9ybUZp
bmFsaXphdGlvbigpOwotCi0gICAgICAgIHJldHVybiBDb2RlUmVmKG1fZXhlY3V0YWJsZU1lbW9y
eSk7Ci0gICAgfQorICAgIC8vIFVwb24gY29tcGxldGlvbiBvZiBhbGwgcGF0Y2hpbmcgJ0ZJTkFM
SVpFX0NPREUoKScgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHRvCisgICAgLy8gY29tcGxldGUgZ2Vu
ZXJhdGlvbiBvZiB0aGUgY29kZS4gQWx0ZXJuYXRpdmVseSwgY2FsbAorICAgIC8vIGZpbmFsaXpl
Q29kZVdpdGhvdXREaXNhc3NlbWJseSgpIGRpcmVjdGx5IGlmIHlvdSBoYXZlIHlvdXIgb3duIHdh
eSBvZgorICAgIC8vIGRpc3BsYXlpbmcgZGlzYXNzZW1ibHkuCisgICAgCisgICAgQ29kZVJlZiBm
aW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKTsKKyAgICBDb2RlUmVmIGZpbmFsaXplQ29k
ZVdpdGhEaXNhc3NlbWJseShjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9Q
UklOVEYoMiwgMyk7CiAKICAgICBDb2RlUHRyIHRyYW1wb2xpbmVBdChMYWJlbCBsYWJlbCkKICAg
ICB7CkBAIC0yMzEsMTY5ICsyMzEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fY29k
ZTsKICAgICB9CiAKLSAgICB2b2lkIGxpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fY29kZSk7Ci0jaWYg
IUVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKLSAgICAgICAgbV9leGVjdXRhYmxlTWVtb3J5ID0g
bV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmV4ZWN1dGFibGVDb3B5KCptX2dsb2JhbERhdGEsIG93
bmVyVUlELCBlZmZvcnQpOwotICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgbV9jb2RlID0gbV9leGVjdXRhYmxlTWVtb3J5LT5zdGFy
dCgpOwotICAgICAgICBtX3NpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29kZVNpemUo
KTsKLSAgICAgICAgQVNTRVJUKG1fY29kZSk7Ci0jZWxzZQotICAgICAgICBtX2luaXRpYWxTaXpl
ID0gbV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmNvZGVTaXplKCk7Ci0gICAgICAgIG1fZXhlY3V0
YWJsZU1lbW9yeSA9IG1fZ2xvYmFsRGF0YS0+ZXhlY3V0YWJsZUFsbG9jYXRvci5hbGxvY2F0ZSgq
bV9nbG9iYWxEYXRhLCBtX2luaXRpYWxTaXplLCBvd25lclVJRCwgZWZmb3J0KTsKLSAgICAgICAg
aWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
Y29kZSA9ICh1aW50OF90KiltX2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCk7Ci0gICAgICAgIEFT
U0VSVChtX2NvZGUpOwotICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlV3JpdGFibGUo
bV9jb2RlLCBtX2luaXRpYWxTaXplKTsKLSAgICAgICAgdWludDhfdCogaW5EYXRhID0gKHVpbnQ4
X3QqKW1fYXNzZW1ibGVyLT51bmxpbmtlZENvZGUoKTsKLSAgICAgICAgdWludDhfdCogb3V0RGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1fY29kZSk7Ci0gICAgICAgIGludCByZWFk
UHRyID0gMDsKLSAgICAgICAgaW50IHdyaXRlUHRyID0gMDsKLSAgICAgICAgVmVjdG9yPExpbmtS
ZWNvcmQ+JiBqdW1wc1RvTGluayA9IG1fYXNzZW1ibGVyLT5qdW1wc1RvTGluaygpOwotICAgICAg
ICB1bnNpZ25lZCBqdW1wQ291bnQgPSBqdW1wc1RvTGluay5zaXplKCk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkgewotICAgICAgICAgICAgaW50IG9m
ZnNldCA9IHJlYWRQdHIgLSB3cml0ZVB0cjsKLSAgICAgICAgICAgIEFTU0VSVCghKG9mZnNldCAm
IDEpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQ29weSB0aGUgaW5zdHJ1Y3Rpb25z
IGZyb20gdGhlIGxhc3QganVtcCB0byB0aGUgY3VycmVudCBvbmUuCi0gICAgICAgICAgICBzaXpl
X3QgcmVnaW9uU2l6ZSA9IGp1bXBzVG9MaW5rW2ldLmZyb20oKSAtIHJlYWRQdHI7Ci0gICAgICAg
ICAgICB1aW50MTZfdCogY29weVNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90
Kj4oaW5EYXRhICsgcmVhZFB0cik7Ci0gICAgICAgICAgICB1aW50MTZfdCogY29weUVuZCA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oaW5EYXRhICsgcmVhZFB0ciArIHJlZ2lvblNp
emUpOwotICAgICAgICAgICAgdWludDE2X3QqIGNvcHlEc3QgPSByZWludGVycHJldF9jYXN0X3B0
cjx1aW50MTZfdCo+KG91dERhdGEgKyB3cml0ZVB0cik7Ci0gICAgICAgICAgICBBU1NFUlQoIShy
ZWdpb25TaXplICUgMikpOwotICAgICAgICAgICAgQVNTRVJUKCEocmVhZFB0ciAlIDIpKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghKHdyaXRlUHRyICUgMikpOwotICAgICAgICAgICAgd2hpbGUgKGNv
cHlTb3VyY2UgIT0gY29weUVuZCkKLSAgICAgICAgICAgICAgICAqY29weURzdCsrID0gKmNvcHlT
b3VyY2UrKzsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLT5yZWNvcmRMaW5rT2Zmc2V0cyhyZWFk
UHRyLCBqdW1wc1RvTGlua1tpXS5mcm9tKCksIG9mZnNldCk7Ci0gICAgICAgICAgICByZWFkUHRy
ICs9IHJlZ2lvblNpemU7Ci0gICAgICAgICAgICB3cml0ZVB0ciArPSByZWdpb25TaXplOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBDYWxjdWxhdGUgYWJzb2x1dGUgYWRkcmVzcyBvZiB0
aGUganVtcCB0YXJnZXQsIGluIHRoZSBjYXNlIG9mIGJhY2t3YXJkcwotICAgICAgICAgICAgLy8g
YnJhbmNoZXMgd2UgbmVlZCB0byBiZSBwcmVjaXNlLCBmb3J3YXJkIGJyYW5jaGVzIHdlIGFyZSBw
ZXNzaW1pc3RpYwotICAgICAgICAgICAgY29uc3QgdWludDhfdCogdGFyZ2V0OwotICAgICAgICAg
ICAgaWYgKGp1bXBzVG9MaW5rW2ldLnRvKCkgPj0ganVtcHNUb0xpbmtbaV0uZnJvbSgpKQotICAg
ICAgICAgICAgICAgIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gb2Zm
c2V0OyAvLyBDb21wZW5zYXRlIGZvciB3aGF0IHdlIGhhdmUgY29sbGFwc2VkIHNvIGZhcgotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1Rv
TGlua1tpXS50bygpIC0gbV9hc3NlbWJsZXItPmV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xp
bmtbaV0udG8oKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEp1bXBMaW5rVHlwZSBqdW1w
TGlua1R5cGUgPSBtX2Fzc2VtYmxlci0+Y29tcHV0ZUp1bXBUeXBlKGp1bXBzVG9MaW5rW2ldLCBv
dXREYXRhICsgd3JpdGVQdHIsIHRhcmdldCk7Ci0gICAgICAgICAgICAvLyBDb21wYWN0IGJyYW5j
aCBpZiB3ZSBjYW4uLi4KLSAgICAgICAgICAgIGlmIChtX2Fzc2VtYmxlci0+Y2FuQ29tcGFjdChq
dW1wc1RvTGlua1tpXS50eXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU3RlcCBiYWNrIGlu
IHRoZSB3cml0ZSBzdHJlYW0KLSAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhID0gbV9hc3Nl
bWJsZXItPmp1bXBTaXplRGVsdGEoanVtcHNUb0xpbmtbaV0udHlwZSgpLCBqdW1wTGlua1R5cGUp
OwotICAgICAgICAgICAgICAgIGlmIChkZWx0YSkgewotICAgICAgICAgICAgICAgICAgICB3cml0
ZVB0ciAtPSBkZWx0YTsKLSAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExp
bmtPZmZzZXRzKGp1bXBzVG9MaW5rW2ldLmZyb20oKSAtIGRlbHRhLCByZWFkUHRyLCByZWFkUHRy
IC0gd3JpdGVQdHIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGp1bXBzVG9MaW5rW2ldLnNldEZyb20od3JpdGVQdHIpOwotICAgICAgICB9Ci0gICAgICAg
IC8vIENvcHkgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBqdW1wCi0gICAgICAgIG1lbWNweShv
dXREYXRhICsgd3JpdGVQdHIsIGluRGF0YSArIHJlYWRQdHIsIG1faW5pdGlhbFNpemUgLSByZWFk
UHRyKTsKLSAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtPZmZzZXRzKHJlYWRQdHIsIG1f
aW5pdGlhbFNpemUsIHJlYWRQdHIgLSB3cml0ZVB0cik7Ci0gICAgICAgIAotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHVpbnQ4
X3QqIGxvY2F0aW9uID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLmZyb20oKTsKLSAgICAgICAg
ICAgIHVpbnQ4X3QqIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gbV9h
c3NlbWJsZXItPmV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0udG8oKSk7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci0+bGluayhqdW1wc1RvTGlua1tpXSwgbG9jYXRpb24sIHRhcmdl
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBqdW1wc1RvTGluay5jbGVhcigpOwotICAgICAgICBt
X3NpemUgPSB3cml0ZVB0ciArIG1faW5pdGlhbFNpemUgLSByZWFkUHRyOwotICAgICAgICBtX2V4
ZWN1dGFibGVNZW1vcnktPnNocmluayhtX3NpemUpOwotCi0jaWYgRFVNUF9MSU5LX1NUQVRJU1RJ
Q1MKLSAgICAgICAgZHVtcExpbmtTdGF0aXN0aWNzKG1fY29kZSwgbV9pbml0aWFsU2l6ZSwgbV9z
aXplKTsKLSNlbmRpZgotI2lmIERVTVBfQ09ERQotICAgICAgICBkdW1wQ29kZShtX2NvZGUsIG1f
c2l6ZSk7Ci0jZW5kaWYKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgcGVyZm9ybUZpbmFsaXph
dGlvbigpCi0gICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRl
ZCk7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotICAgICAgICBtX2NvbXBsZXRlZCA9IHRy
dWU7Ci0jZW5kaWYKKyAgICB2b2lkIGxpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpOwogCi0jaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQotICAg
ICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlRXhlY3V0YWJsZShjb2RlKCksIG1faW5pdGlh
bFNpemUpOwotI2Vsc2UKLSAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWFrZUV4ZWN1dGFi
bGUoY29kZSgpLCBtX3NpemUpOwotI2VuZGlmCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpjYWNo
ZUZsdXNoKGNvZGUoKSwgbV9zaXplKTsKLSAgICB9CisgICAgdm9pZCBwZXJmb3JtRmluYWxpemF0
aW9uKCk7CiAKICNpZiBEVU1QX0xJTktfU1RBVElTVElDUwotICAgIHN0YXRpYyB2b2lkIGR1bXBM
aW5rU3RhdGlzdGljcyh2b2lkKiBjb2RlLCBzaXplX3QgaW5pdGlhbFNpemUsIHNpemVfdCBmaW5h
bFNpemUpCi0gICAgewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgbGlua0NvdW50ID0gMDsKLSAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIHRvdGFsSW5pdGlhbFNpemUgPSAwOwotICAgICAgICBzdGF0
aWMgdW5zaWduZWQgdG90YWxGaW5hbFNpemUgPSAwOwotICAgICAgICBsaW5rQ291bnQrKzsKLSAg
ICAgICAgdG90YWxJbml0aWFsU2l6ZSArPSBpbml0aWFsU2l6ZTsKLSAgICAgICAgdG90YWxGaW5h
bFNpemUgKz0gZmluYWxTaXplOwotICAgICAgICBkYXRhTG9nKCJsaW5rICVwOiBvcmlnICV1LCBj
b21wYWN0ICV1IChkZWx0YSAldSwgJS4yZiUlKVxuIiwgCi0gICAgICAgICAgICAgICAgICAgIGNv
ZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsU2l6ZSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmaW5hbFNpemUpLAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpLAotICAgICAgICAgICAgICAgICAgICAxMDAuMCAq
IChpbml0aWFsU2l6ZSAtIGZpbmFsU2l6ZSkgLyBpbml0aWFsU2l6ZSk7Ci0gICAgICAgIGRhdGFM
b2coIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAlLjJmJSUpXG4i
LCAKLSAgICAgICAgICAgICAgICAgICAgbGlua0NvdW50LCB0b3RhbEluaXRpYWxTaXplLCB0b3Rh
bEZpbmFsU2l6ZSwgdG90YWxJbml0aWFsU2l6ZSAtIHRvdGFsRmluYWxTaXplLAotICAgICAgICAg
ICAgICAgICAgICAxMDAuMCAqICh0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUpIC8g
dG90YWxJbml0aWFsU2l6ZSk7Ci0gICAgfQorICAgIHN0YXRpYyB2b2lkIGR1bXBMaW5rU3RhdGlz
dGljcyh2b2lkKiBjb2RlLCBzaXplX3QgaW5pdGlhbFNpemUsIHNpemVfdCBmaW5hbFNpemUpOwog
I2VuZGlmCiAgICAgCiAjaWYgRFVNUF9DT0RFCi0gICAgc3RhdGljIHZvaWQgZHVtcENvZGUodm9p
ZCogY29kZSwgc2l6ZV90IHNpemUpCi0gICAgewotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAg
ICAvLyBEdW1wIHRoZSBnZW5lcmF0ZWQgY29kZSBpbiBhbiBhc20gZmlsZSBmb3JtYXQgdGhhdCBj
YW4gYmUgYXNzZW1ibGVkIGFuZCB0aGVuIGRpc2Fzc2VtYmxlZAotICAgICAgICAvLyBmb3IgZGVi
dWdnaW5nIHB1cnBvc2VzLiBGb3IgZXhhbXBsZSwgc2F2ZSB0aGlzIG91dHB1dCBhcyBqaXQuczoK
LSAgICAgICAgLy8gICBnY2MgLWFyY2ggYXJtdjcgLWMgaml0LnMKLSAgICAgICAgLy8gICBvdG9v
bCAtdHYgaml0Lm8KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGNvZGVDb3VudCA9IDA7Ci0gICAg
ICAgIHVuc2lnbmVkIHNob3J0KiB0Y29kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Kj4o
Y29kZSk7Ci0gICAgICAgIHNpemVfdCB0c2l6ZSA9IHNpemUgLyBzaXplb2Yoc2hvcnQpOwotICAg
ICAgICBjaGFyIG5hbWVCdWZbMTI4XTsKLSAgICAgICAgc25wcmludGYobmFtZUJ1Ziwgc2l6ZW9m
KG5hbWVCdWYpLCAiX2pzY19qaXQldSIsIGNvZGVDb3VudCsrKTsKLSAgICAgICAgZGF0YUxvZygi
XHQuc3ludGF4IHVuaWZpZWRcbiIKLSAgICAgICAgICAgICAgICAgICAgIlx0LnNlY3Rpb25cdF9f
VEVYVCxfX3RleHQscmVndWxhcixwdXJlX2luc3RydWN0aW9uc1xuIgotICAgICAgICAgICAgICAg
ICAgICAiXHQuZ2xvYmxcdCVzXG4iCi0gICAgICAgICAgICAgICAgICAgICJcdC5hbGlnbiAyXG4i
Ci0gICAgICAgICAgICAgICAgICAgICJcdC5jb2RlIDE2XG4iCi0gICAgICAgICAgICAgICAgICAg
ICJcdC50aHVtYl9mdW5jXHQlc1xuIgotICAgICAgICAgICAgICAgICAgICAiIyAlcFxuIgotICAg
ICAgICAgICAgICAgICAgICAiJXM6XG4iLCBuYW1lQnVmLCBuYW1lQnVmLCBjb2RlLCBuYW1lQnVm
KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0c2l6ZTsgaSsr
KQotICAgICAgICAgICAgZGF0YUxvZygiXHQuc2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ldKTsKLSNl
bGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgICAgIC8vICAgZ2NjIC1jIGppdC5zCi0gICAg
ICAgIC8vICAgb2JqZHVtcCAtRCBqaXQubwotICAgICAgICBzdGF0aWMgdW5zaWduZWQgY29kZUNv
dW50ID0gMDsKLSAgICAgICAgdW5zaWduZWQgaW50KiB0Y29kZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludCo+KGNvZGUpOwotICAgICAgICBzaXplX3QgdHNpemUgPSBzaXplIC8gc2l6ZW9mKHVu
c2lnbmVkIGludCk7Ci0gICAgICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgICAgICBzbnByaW50
ZihuYW1lQnVmLCBzaXplb2YobmFtZUJ1ZiksICJfanNjX2ppdCV1IiwgY29kZUNvdW50KyspOwot
ICAgICAgICBkYXRhTG9nKCJcdC5nbG9ibFx0JXNcbiIKLSAgICAgICAgICAgICAgICAgICAgIlx0
LmFsaWduIDRcbiIKLSAgICAgICAgICAgICAgICAgICAgIlx0LmNvZGUgMzJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgIlx0LnRleHRcbiIKLSAgICAgICAgICAgICAgICAgICAgIiMgJXBcbiIKLSAg
ICAgICAgICAgICAgICAgICAgIiVzOlxuIiwgbmFtZUJ1ZiwgY29kZSwgbmFtZUJ1Zik7Ci0KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0gICAgICAgICAgICBk
YXRhTG9nKCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtpXSk7Ci0jZW5kaWYKLSAgICB9CisgICAg
c3RhdGljIHZvaWQgZHVtcENvZGUodm9pZCogY29kZSwgc2l6ZV90IHNpemUpOwogI2VuZGlmCiAg
ICAgCiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IG1fZXhlY3V0YWJsZU1lbW9y
eTsKQEAgLTQxMCw2ICsyNTcsMjcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gVXNlIHRo
aXMgdG8gZmluYWxpemUgY29kZSwgbGlrZSBzbzoKKy8vCisvLyBDb2RlUmVmIGNvZGUgPSBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsICgibXkgc3VwZXIgdGhpbmd5IG51bWJlciAlZCIsIG51bWJl
cikpOworLy8KKy8vIFdoaWNoLCBpbiBkaXNhc3NlbWJseSBtb2RlLCB3aWxsIHByaW50OgorLy8K
Ky8vIEdlbmVyYXRlZCBKSVQgY29kZSBmb3IgbXkgc3VwZXIgdGhpbmd5IG51bWJlciA0MjoKKy8v
ICAgICBDb2RlIGF0IFsweDEyMzQ1NiwgMHgyMzQ1NjddOgorLy8gICAgICAgICAweDEyMzQ1Njog
bW92ICQwLCAwCisvLyAgICAgICAgIDB4MTIzNDVhOiByZXQKKy8vCisvLyAuLi4gYW5kIHNvIG9u
LgorLy8KKy8vIE5vdGUgdGhhdCB0aGUgZGF0YUxvZ0FyZ3VtZW50c0ZvckhlYWRpbmcgYXJlIG9u
bHkgZXZhbHVhdGVkIHdoZW4gc2hvd0Rpc2Fzc2VtYmx5CisvLyBpcyB0cnVlLCBzbyB5b3UgY2Fu
IGhpZGUgZXhwZW5zaXZlIGRpc2Fzc2VtYmx5LW9ubHkgY29tcHV0YXRpb25zIGluc2lkZSB0aGVy
ZS4KKworI2RlZmluZSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dB
cmd1bWVudHNGb3JIZWFkaW5nKSAgXAorICAgIChVTkxJS0VMWShPcHRpb25zOjpzaG93RGlzYXNz
ZW1ibHkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA/ICgobGlua0J1
ZmZlclJlZmVyZW5jZSkuZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5IGRhdGFMb2dBcmd1bWVu
dHNGb3JIZWFkaW5nKSBcCisgICAgIDogKGxpbmtCdWZmZXJSZWZlcmVuY2UpLmZpbmFsaXplQ29k
ZVdpdGhvdXREaXNhc3NlbWJseSgpKQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEyMDc2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDkgQEAKICNpZm5kZWYgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmX2gKICNkZWZpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmX2gKIAorI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMzY3LDYgKzM2
OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGVNZW1vcnktPnNpemVJ
bkJ5dGVzKCk7CiAgICAgfQogICAgIAorICAgIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBj
aGFyKiBwcmVmaXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSlNDOjp0cnlUb0Rpc2Fz
c2VtYmxlKG1fY29kZVB0ciwgc2l6ZSgpLCBwcmVmaXgsIFdURjo6ZGF0YUZpbGUoKSk7CisgICAg
fQorICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY29kZVB0cjsg
fQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTAgKzIyMCw5IEBA
IGJvb2wgSklUQ29tcGlsZXI6OmNvbXBpbGUoSklUQ29kZSYgZW50cnkKICAgICBsaW5rKGxpbmtC
dWZmZXIpOwogICAgIHNwZWN1bGF0aXZlLmxpbmtPU1JFbnRyaWVzKGxpbmtCdWZmZXIpOwogCi0g
ICAgZW50cnkgPSBKSVRDb2RlKGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCksIEpJVENvZGU6OkRG
R0pJVCk7Ci0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGVudHJ5LnRyeVRvRGlz
YXNzZW1ibGUoKTsKLSNlbmRpZgorICAgIGVudHJ5ID0gSklUQ29kZSgKKyAgICAgICAgRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCAoIkRGRyBwcm9ncmFtL2V2YWwgQ29kZUJsb2NrICVwIiwgbV9j
b2RlQmxvY2spKSwKKyAgICAgICAgSklUQ29kZTo6REZHSklUKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMzA1LDEwICszMDQsOSBAQCBib29sIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rp
b24oSklUQ29kCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxBcml0eUNoZWNrLCBtX2NvZGVCbG9j
ay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29w
X2NhbGxfYXJpdHlDaGVjayk7CiAKICAgICBlbnRyeVdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwotICAgIGVudHJ5ID0gSklUQ29kZShsaW5rQnVmZmVy
LmZpbmFsaXplQ29kZSgpLCBKSVRDb2RlOjpERkdKSVQpOwotI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKLSAgICBlbnRyeS50cnlUb0Rpc2Fzc2VtYmxlKCk7Ci0jZW5kaWYKKyAgICBlbnRy
eSA9IEpJVENvZGUoCisgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJERkcgZnVu
Y3Rpb24gQ29kZUJsb2NrICVwIiwgbV9jb2RlQmxvY2spKSwKKyAgICAgICAgSklUQ29kZTo6REZH
SklUKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIwNzY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSwxMSArNzksMTEgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIGV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCByZWNvdmVyeSk7
CiAgICAgICAgIAogICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAm
aml0LCBjb2RlQmxvY2spOwotICAgICAgICBleGl0Lm1fY29kZSA9IHBhdGNoQnVmZmVyLmZpbmFs
aXplQ29kZSgpOwotCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRh
TG9nKCJPU1IgZXhpdCBjb2RlIGF0IFslcCwgJXApLlxuIiwgcGF0Y2hCdWZmZXIuZGVidWdBZGRy
ZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihwYXRjaEJ1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBw
YXRjaEJ1ZmZlci5kZWJ1Z1NpemUoKSk7Ci0jZW5kaWYKKyAgICAgICAgZXhpdC5tX2NvZGUgPSBG
SU5BTElaRV9DT0RFKAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICAgICAoIkRG
RyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmcm9tIENvZGVCbG9jayAlcCIsCisgICAg
ICAgICAgICAgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0
Lm1fbm9kZUluZGV4LAorICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQp
LCBjb2RlQmxvY2spKTsKICAgICB9CiAgICAgCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMjA3NjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyAr
MTU1LDEwIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAgICAK
ICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
LCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN1Y2Nlc3NMYWJlbCwgc2xvd0Nhc2VMYWJl
bCk7CiAgICAgCi0gICAgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsK
KyAgICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAor
ICAgICAgICAoIkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNzIHN0dWIgZm9yIENvZGVCbG9jayAl
cCwgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdWNjZXNz
TGFiZWwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCiBzdGF0aWMgYm9vbCB0cnlDYWNoZUdl
dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKQEAgLTIwNiw3ICsyMDksMTEgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVH
ZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAKICAgICAgICAgbGlua1Jlc3RvcmVTY3JhdGNo
KHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3R1YkluZm8sIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcyk7CiAgICAgICAgIAotICAgICAgICBzdHViSW5mby5zdHViUm91dGlu
ZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgICAgICBzdHViSW5mby5zdHViUm91
dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAg
ICAgICgiREZHIEdldEJ5SWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0
dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAgCiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwog
ICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
anVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb1N0cnVjdENoZWNrKSwg
Q29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8uc3R1YlJvdXRpbmUuY29kZSgpKSk7CkBAIC00MDUs
NyArNDEyLDExIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaGFuZGxlckNhbGwsIGxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJJblN0dWIpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAgICAgKCJERkcgR2V0QnlJZCBwb2x5bW9y
cGhpYyBsaXN0IGFjY2VzcyBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRh
Q2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAKICAgICAgICAgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVMaXN0LT5saXN0W2xpc3RJbmRleF0uc2V0KCpnbG9iYWxEYXRhLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHViUm91dGluZSwgc3RydWN0dXJlLCBpc0Rp
cmVjdCk7CiAgICAgICAgIApAQCAtNjExLDcgKzYyMiwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0
UmVwbGFjZVN0dWIoCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxs
VG9Eb25lKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwog
ICAgICAgICAgICAgCi0gICAgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUo
KTsKKyAgICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVy
LAorICAgICAgICAoIkRGRyBQdXRCeUlkIHJlcGxhY2Ugc3R1YiBmb3IgQ29kZUJsb2NrICVwLCBy
ZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIH0KIAogc3Rh
dGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKApAQCAtNzA3LDcgKzcyMiwxMSBAQCBzdGF0
aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgZWxzZQogICAgICAgICBwYXRjaEJ1
ZmZlci5saW5rKGZhaWx1cmVDYXNlcywgZmFpbHVyZUxhYmVsKTsKICAgICAgICAgICAgIAotICAg
IHN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgc3R1YlJvdXRp
bmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgKCJERkcg
UHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVw
IiwKKyAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFD
YWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9CiAKIHN0YXRpYyBib29sIHRyeUNh
Y2hlUHV0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIFB1dEtpbmQgcHV0S2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAgICAgCiAgICAgcGF0
Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIGNvbXBpbGVPU1JFeGl0KTsKICAgICAKLSAgICBy
ZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMTIwNzY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDE4IEBACiAjaWZuZGVmIERpc2Fzc2VtYmxlcl9oCiAjZGVm
aW5lIERpc2Fzc2VtYmxlcl9oCiAKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
KyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjsKKwogI2lmIEVOQUJMRShESVNBU1NFTUJMRVIpCi1ib29sIHRyeVRvRGlz
YXNzZW1ibGUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBzaXplX3Qgc2l6ZSwgRklMRSogb3V0KTsK
K2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXpl
X3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpOwogI2Vsc2UKLWlubGluZSBi
b29sIHRyeVRvRGlzYXNzZW1ibGUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBzaXplX3QsIEZJTEUq
KQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBGSUxFKikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxMjA3NjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDExICsyOCwxMiBAQAogCiAjaWYgVVNFKFVESVM4NikKIAorI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgInVkaXM4Ni5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyLCBzaXplX3Qgc2l6ZSwgRklMRSogb3V0KQorYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIqIHByZWZpeCwgRklMRSogb3V0KQogewogICAgIHVkX3QgZGlzYXNzZW1ibGVyOwogICAgIHVk
X2luaXQoJmRpc2Fzc2VtYmxlcik7CkBAIC00NSwxMCArNDYsMTIgQEAgYm9vbCB0cnlUb0Rpc2Fz
c2VtYmxlKE1hY3JvQXNzZW1ibGVyQ29kZQogICAgIHVkX3NldF9wYygmZGlzYXNzZW1ibGVyLCBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90Pihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICB1ZF9zZXRfc3ludGF4KCZkaXNhc3NlbWJsZXIsIFVEX1NZTl9BVFQpOwogICAgIAorICAgIHVp
bnQ2NF90IGN1cnJlbnRQQyA9IGRpc2Fzc2VtYmxlci5wYzsKICAgICB3aGlsZSAodWRfZGlzYXNz
ZW1ibGUoJmRpc2Fzc2VtYmxlcikpIHsKICAgICAgICAgY2hhciBwY1N0cmluZ1syMF07Ci0gICAg
ICAgIHNucHJpbnRmKHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihkaXNhc3NlbWJsZXIucGMpKTsKLSAgICAgICAgZnByaW50Zihv
dXQsICIlMTZzOiAlc1xuIiwgcGNTdHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3NlbWJsZXIpKTsK
KyAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmluZyksICIweCVseCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJlbnRQQykpOworICAgICAgICBmcHJpbnRmKG91
dCwgIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNTdHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3Nl
bWJsZXIpKTsKKyAgICAgICAgY3VycmVudFBDID0gZGlzYXNzZW1ibGVyLnBjOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYxLDcgKzc2MSw4IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGls
ZShDb2RlUHRyKiBmdW4KICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rp
b25Db2RlICYmIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrKQogICAgICAgICAqZnVuY3Rpb25FbnRy
eUFyaXR5Q2hlY2sgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwogICAgIAot
ICAgIENvZGVSZWYgcmVzdWx0ID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgQ29k
ZVJlZiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwgKCJCYXNl
bGluZSBKSVQgY29kZSBmb3IgQ29kZUJsb2NrICVwIiwgbV9jb2RlQmxvY2spKTsKICAgICAKICAg
ICBtX2dsb2JhbERhdGEtPm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGlu
ZUpJVC5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEyMDc2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDUsOSArMTQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9yZWYu
c2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIHRyeVRvRGlzYXNzZW1i
bGUoKSBjb25zdAorICAgICAgICBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgY2hhciogcHJl
Zml4KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSlNDOjp0cnlUb0Rpc2Fz
c2VtYmxlKG1fcmVmLmNvZGUoKSwgc2l6ZSgpLCBXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIG1fcmVmLnRyeVRvRGlzYXNzZW1ibGUocHJlZml4KTsKICAgICAgICAgfQogCiAg
ICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGdldEV4ZWN1dGFibGVNZW1vcnkoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2
aXNpb24gMTIwNzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNyArMjA3LDcgQEAgUGFzc1JlZlB0cjxFeGVj
dXRhYmxlTWVtb3J5SGFuZGxlPiBKSVQ6OgogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbENhbGxO
b3RKU0Z1bmN0aW9uLCBGdW5jdGlvblB0cihjdGlfb3BfY2FsbF9Ob3RKU0Z1bmN0aW9uKSk7CiAg
ICAgcGF0Y2hCdWZmZXIubGluayhjYWxsQ29uc3RydWN0Tm90SlNGdW5jdGlvbiwgRnVuY3Rpb25Q
dHIoY3RpX29wX2NvbnN0cnVjdF9Ob3RKU0NvbnN0cnVjdCkpOwogCi0gICAgQ29kZVJlZiBmaW5h
bENvZGUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBDb2RlUmVmIGZpbmFsQ29k
ZSA9IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiSklUIENUSSBtYWNoaW5lIHRyYW1wb2xp
bmVzIikpOwogICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBleGVjdXRhYmxlTWVt
b3J5ID0gZmluYWxDb2RlLmV4ZWN1dGFibGVNZW1vcnkoKTsKIAogICAgIHRyYW1wb2xpbmVzLT5j
dGlWaXJ0dWFsQ2FsbExpbmsgPSBwYXRjaEJ1ZmZlci50cmFtcG9saW5lQXQodmlydHVhbENhbGxM
aW5rQmVnaW4pOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXYKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2JhbERhdGEs
IHRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAKICAgICBwYXRjaEJ1ZmZlci5saW5rKG5hdGl2ZUNh
bGwsIEZ1bmN0aW9uUHRyKGZ1bmMpKTsKLSAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVD
b2RlKCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiSklUIENUSSBu
YXRpdmUgY2FsbCIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBQYXNzUmVm
UHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6CiAgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsQ2FsbE5vdEpTRnVuY3Rpb24sIEZ1bmN0aW9uUHRyKGN0aV9vcF9jYWxsX05vdEpTRnVuY3Rp
b24pKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxDb25zdHJ1Y3ROb3RKU0Z1bmN0aW9uLCBG
dW5jdGlvblB0cihjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3RydWN0KSk7CiAKLSAgICBDb2Rl
UmVmIGZpbmFsQ29kZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIENvZGVSZWYg
ZmluYWxDb2RlID0gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG1hY2hpbmUg
dHJhbXBvbGluZXMiKSk7CiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1
dGFibGVNZW1vcnkgPSBmaW5hbENvZGUuZXhlY3V0YWJsZU1lbW9yeSgpOwogCiAgICAgdHJhbXBv
bGluZXMtPmN0aVZpcnR1YWxDYWxsTGluayA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdCh2aXJ0
dWFsQ2FsbExpbmtCZWdpbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMDc2NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRC
eVZhbFN0dWJHZW5lCiAgICAgaml0LnJldCgpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIHBh
dGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoIlN0cmluZyBnZXRfYnlfdmFsIHN0dWIiKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU0NSw3
ICs1NDUsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbMF0uZnJvbSwgRnVuY3Rpb25QdHIoY3RpX29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX3JlYWxsb2MpKTsKICAgICB9CiAgICAgCi0gICAgc3R1Yklu
Zm8tPnN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgc3R1Yklu
Zm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisg
ICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X2lkIHRyYW5zaXRpb24gc3R1YiBmb3IgQ29kZUJsb2Nr
ICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVybkFkZHJl
c3MudmFsdWUoKSkpOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihtX2NvZGVCbG9j
ayk7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRk
cmVzcywgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUoKSkpOwog
fQpAQCAtNjExLDcgKzYxNCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFy
cmF5TGVuCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJl
Z2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3Vs
dCkpOwogICAgIAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0
IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBw
YXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBG
SU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgKCJCYXNlbGluZSBn
ZXRfYnlfaWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50
ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1
dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0
Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVy
ZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LnN0cnVjdHVyZUNoZWNrKTsKQEAgLTY3Nyw3ICs2ODQsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cgogICAgIH0KIAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdl
IGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHVi
SW5mby0+c3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBzdHVi
SW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwK
KyAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8gc3R1YiBmb3IgQ29kZUJsb2NrICVw
LCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFz
ZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAg
Ly8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBh
dGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRp
b24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2spOwpAQCAtNzM1LDcgKzc0NiwxMSBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoCiAgICAgLy8gT24gc3VjY2VzcyBy
ZXR1cm4gYmFjayB0byB0aGUgaG90IHBhdGNoIGNvZGUsIGF0IGEgcG9pbnQgaXQgd2lsbCBwZXJm
b3JtIHRoZSBzdG9yZSB0byBkZXN0IGZvciB1cy4KICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nl
c3MsIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KSk7CiAKLSAgICBDb2RlUmVmIHN0dWJSb3V0aW5lID0g
cGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHN0
dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAg
ICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHNlbGYgbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJl
dHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhC
ZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgIHBvbHltb3Jw
aGljU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBtX2Nv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0dWJSb3V0aW5lLCBzdHJ1Y3R1cmUsIGlzRGly
ZWN0KTsKICAgICAKQEAgLTgwMCw3ICs4MTUsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvTGlzdAogICAgIC8vIE9uIHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhv
dCBwYXRjaCBjb2RlLCBhdCBhIHBvaW50IGl0IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVz
dCBmb3IgdXMuCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0
aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJl
c3VsdCkpOwogICAgIAotICAgIENvZGVSZWYgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5h
bGl6ZUNvZGUoKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3R1YlJvdXRpbmUgPSBGSU5B
TElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgKCJCYXNlbGluZSBnZXRf
YnlfaWQgcHJvdG8gbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
CisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zm
c2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1
bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxp
c3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YlJvdXRpbmUsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3Ry
dWN0dXJlLCBpc0RpcmVjdCk7CiAgICAgCkBAIC04NzAsNyArODg5LDExIEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICAvLyBPbiBzdWNjZXNzIHJldHVybiBi
YWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBpdCB3aWxsIHBlcmZvcm0gdGhl
IHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LmdldC5wdXRSZXN1bHQpKTsKICAgICAKLSAgICBDb2RlUmVmIHN0dWJSb3V0aW5lID0gcGF0
Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHN0dWJS
b3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICgi
QmFzZWxpbmUgZ2V0X2J5X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAgLy8gVHJh
Y2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxh
dGVyLgogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1
YlJvdXRpbmUsIHN0cnVjdHVyZSwgY2hhaW4sIGlzRGlyZWN0KTsKQEAgLTkzNiw3ICs5NTksMTEg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsKICAgICAKICAgICAvLyBU
cmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQg
bGF0ZXIuCi0gICAgQ29kZVJlZiBzdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZSgpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NP
REUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBj
aGFpbiBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBt
X2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAg
ICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKTsKICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBzdHViUm91dGluZTsK
ICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGlu
IHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjA3NjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRC
eVZhbFN0dWJHZW5lCiAgICAgaml0LnJldCgpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIHBh
dGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoIlN0cmluZyBnZXRfYnlfdmFsIHN0dWIiKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU2NCw3
ICs1NjQsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbMF0uZnJvbSwgRnVuY3Rpb25QdHIoY3RpX29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX3JlYWxsb2MpKTsKICAgICB9CiAgICAgCi0gICAgc3R1Yklu
Zm8tPnN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgc3R1Yklu
Zm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisg
ICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X2lkIHRyYW5zaXRpb24gZm9yIENvZGVCbG9jayAlcCwg
cmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLnZh
bHVlKCkpKTsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIobV9jb2RlQmxvY2spOwog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3Ms
IENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLT5zdHViUm91dGluZS5jb2RlKCkpKTsKIH0KQEAg
LTYyNSw3ICs2MjgsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxl
bgogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5s
YWJlbEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsK
IAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwg
YmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZl
ci5maW5hbGl6ZUNvZGUoKTsKKyAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9D
T0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgKCJCYXNsaW5lIEpJVCBnZXRfYnlf
aWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwK
KyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZz
ZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3Vs
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVt
cCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQu
CiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJl
Z2luLmp1bXBBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJl
Q2hlY2spOwpAQCAtNjg4LDcgKzY5NSwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG8oU3RyCiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2Ug
aGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgotICAgIHN0dWJJ
bmZvLT5zdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIHN0dWJJ
bmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAor
ICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gc3R1YiBmb3IgQ29kZUJsb2Nr
ICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5o
b3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2gu
YmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAv
LyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0
aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlv
biA9IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayk7CkBAIC03NDUsNyArNzU2LDExIEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICAvLyBPbiBzdWNjZXNzIHJl
dHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBpdCB3aWxsIHBlcmZv
cm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vz
cywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBz
dHViQ29kZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBzdHViQ29kZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAor
ICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgbGlzdCBzdHViIGZvciBDb2RlQmxvY2sg
JXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhv
dFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgIHBv
bHltb3JwaGljU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRh
LCBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0dWJDb2RlLCBzdHJ1Y3R1cmUsIGlz
RGlyZWN0KTsKIApAQCAtODExLDcgKzgyNiwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0CiAgICAgLy8gT24gc3VjY2VzcyByZXR1cm4gYmFjayB0byB0aGUgaG90
IHBhdGNoIGNvZGUsIGF0IGEgcG9pbnQgaXQgd2lsbCBwZXJmb3JtIHRoZSBzdG9yZSB0byBkZXN0
IGZvciB1cy4KICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVz
dWx0KSk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3R1YkNvZGUgPSBwYXRjaEJ1ZmZl
ci5maW5hbGl6ZUNvZGUoKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3R1YkNvZGUgPSBG
SU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgKCJCYXNlbGluZSBK
SVQgZ2V0X2J5X2lkIHByb3RvIGxpc3Qgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9p
bnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFi
ZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQu
cHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgcHJvdG90eXBlU3RydWN0dXJl
cy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBtX2NvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0dWJDb2RlLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwg
aXNEaXJlY3QpOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2Ug
YmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCkBAIC04ODAsNyArODk5
LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICAvLyBP
biBzdWNjZXNzIHJldHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBp
dCB3aWxsIHBlcmZvcm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVy
Lmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsKIAotICAgIENvZGVSZWYgc3R1
YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBDb2RlUmVmIHN0dWJS
b3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICgi
QmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFpbiBsaXN0IHN0dWIgZm9yIENvZGVCbG9jayAlcCwg
cmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0
aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgLy8gVHJh
Y2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxh
dGVyLgogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1
YlJvdXRpbmUsIHN0cnVjdHVyZSwgY2hhaW4sIGlzRGlyZWN0KTsKQEAgLTk0Nyw3ICs5NzAsMTEg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0
dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsKIAogICAgIC8vIFRyYWNr
IHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRl
ci4KLSAgICBDb2RlUmVmIHN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7
CisgICAgQ29kZVJlZiBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNo
QnVmZmVyLAorICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgY2hhaW4gc3R1YiBmb3Ig
Q29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5m
by0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gc3R1YlJvdXRpbmU7CiAKICAgICAvLyBGaW5h
bGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBq
dW1wIGhlcmUgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAxMjA3NjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDEzICsxMzIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXQoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZpbmFsaXplKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGZhbGxiYWNrKQor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5r
S2luZCkKICAgICAgICAgewogICAgICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihnbG9i
YWxEYXRhLCB0aGlzLCBHTE9CQUxfVEhVTktfSUQpOwogICAgICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhtX2ZhaWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbChmYWxsYmFjaykpOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAg
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2NhbGxzW2ldLmZpcnN0LCBtX2NhbGxzW2ldLnNl
Y29uZCk7Ci0gICAgICAgICAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXpl
ZCB0aHVuayBmb3IgJXMiLCB0aHVua0tpbmQpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFz
c3VtZXMgdGhhdCB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZp
cnN0IGFyZ3VtZW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxMjA3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJDb2RlQXRUaHVua0dlbgogICAgIFNwZWNpYWxpemVk
VGh1bmtKSVQgaml0KDEsIGdsb2JhbERhdGEpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCk7CiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1
cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpLCAiY2hhckNvZGVBdCIpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQpAQCAtODcsNyArODcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckF0VGh1
bmtHZW5lcmF0CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0KTsKICAgICBjaGFyVG9TdHJpbmcoaml0
LCBnbG9iYWxEYXRhLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJu
SlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFs
aXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpKTsK
KyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCgpLCAiY2hhckF0Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCkBA
IC05Nyw3ICs5Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmcm9tQ2hhckNvZGVUaHVua0cK
ICAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwogICAgIGNoYXJUb1N0cmluZyhqaXQsIGdsb2JhbERhdGEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERh
dGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCksICJmcm9tQ2hhckNvZGUi
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCkBAIC0xMDksNyArMTA5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHNxcnRUaHVua0dlbmVyYXRvcgogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
ICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSk7CisgICAgcmV0dXJuIGppdC5m
aW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
KSwgInNxcnQiKTsKIH0KIAogCkBAIC0yMDksNyArMjA5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZsb29yVGh1bmtHZW5lcmF0bwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJl
dHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0
LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5q
aXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpLCAiZmxvb3IiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCkBAIC0y
MjgsNyArMjI4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcgog
ICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgZG91
YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBn
bG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpKTsKKyAgICByZXR1cm4gaml0LmZp
bmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgp
LCAiY2VpbCIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCkBAIC0yNjIsNyArMjYyLDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtHZW5lcmF0bwogICAgIGppdC5yZXR1cm5JbnQzMihTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAg
ICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpLCAicm91bmQiKTsKIH0KIAogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGV4cFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKQEAgLTI3NSw3ICsyNzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5l
cmF0b3IoCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3Vi
bGVUb0RvdWJsZShVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKTsKICAgICBqaXQucmV0dXJuRG91
YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxp
emUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOwor
ICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKCksICJleHAiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxv
Z1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTI4OCw3ICsyODgs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0b3IoCiAgICAgaml0Lmxv
YWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZShVbmFyeURv
dWJsZU9wV3JhcHBlcihsb2cpKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmlu
YWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCks
ICJsb2ciKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTMwOCw3ICszMDgsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYWJzVGh1bmtHZW5lcmF0b3IoCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgw
LCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCk7CiAgICAgaml0LmFic0RvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVj
aWFsaXplZFRodW5rSklUOjpmcFJlZ1QxKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDEpOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERh
dGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBq
aXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKCksICJhYnMiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTM2MCw3ICszNjAsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcG93VGh1bmtHZW5lcmF0b3IoCiAgICAgfSBlbHNlCiAgICAgICAgIGpp
dC5hcHBlbmRGYWlsdXJlKG5vbkludEV4cG9uZW50KTsKIAotICAgIHJldHVybiBqaXQuZmluYWxp
emUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOwor
ICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKCksICJwb3ciKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAxMjA3NjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCi1z
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3N0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7CiAgICAgSlNJ
bnRlcmZhY2VKSVQgaml0OwogICAgIApAQCAtNDUsMzcgKzQ1LDM3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHUKICAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6
cmVnVDApOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZq
aXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZSgpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50ICVzIHBy
b2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwg
ImZ1bmN0aW9uIGZvciBjYWxsIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGds
b2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIik7
CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7Ci0gICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2spOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAi
ZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIik7CiB9CiAKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2V2YWxfcHJvbG9ndWUpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpOwogfQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIwNzY2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKIAogYm9vbCB1c2VK
SVQ7CiAKK2Jvb2wgc2hvd0Rpc2Fzc2VtYmx5OworCiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0
aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIAogdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CkBAIC0xNjIsNiArMTY0LDgg
QEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiB7CiAgICAgU0VUKHVzZUpJVCwgdHJ1ZSk7CiAg
ICAgCisgICAgU0VUKHNob3dEaXNhc3NlbWJseSwgZmFsc2UpOworICAgIAogICAgIFNFVChtYXhp
bXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTAwMDApOwogICAgIAog
ICAgIFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCwgMTgwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHJldmlzaW9uIDEyMDc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIE9wdGlvbnMgewogCiBleHRlcm4gYm9vbCB1c2VKSVQ7CiAKK2V4dGVybiBib29sIHNo
b3dEaXNhc3NlbWJseTsKKwogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25DYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OwogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAkocmV2aXNpb24gMTIwNzY2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MTEsMTQg
KzI2MTEsMTQgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBNYXRjaE9u
bHkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQotICAgICAgICAgICAg
ICAgIGppdE9iamVjdC5zZXQ4Qml0Q29kZU1hdGNoT25seShsaW5rQnVmZmVyLmZpbmFsaXplQ29k
ZSgpKTsKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0OEJpdENvZGVNYXRjaE9ubHkoRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNz
aW9uIikpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0
MTZCaXRDb2RlTWF0Y2hPbmx5KGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCkpOworICAgICAgICAg
ICAgICAgIGppdE9iamVjdC5zZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfQ09ERShsaW5r
QnVmZmVyLCAoIk1hdGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAg
ICAgICAgICAgICBqaXRPYmplY3Quc2V0OEJpdENvZGUobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUo
KSk7CisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDhCaXRDb2RlKEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgKCI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGppdE9iamVjdC5zZXQxNkJpdENvZGUobGlua0J1ZmZlci5m
aW5hbGl6ZUNvZGUoKSk7CisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZShG
SU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKSk7
CiAgICAgICAgIH0KICAgICAgICAgaml0T2JqZWN0LnNldEZhbGxCYWNrKG1fc2hvdWxkRmFsbEJh
Y2spOwogICAgIH0K
</data>
<flag name="review"
          id="156206"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148476</attachid>
            <date>2012-06-19 17:57:46 -0700</date>
            <delta_ts>2012-06-19 17:57:46 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>disassembly_patch_2.diff</filename>
            <type>text/plain</type>
            <size>65687</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBA
QAorMjAxMi0wNi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYWJsZSB0byBzaG93IGRpc2Fzc2VtYmx5IGZvciBhbGwgZ2VuZXJhdGVk
IEpJVCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTUzNgorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAg
ICAKKyAgICAgICAgTm93IGluc3RlYWQgb2YgZG9pbmcgbGlua0J1ZmZlci5maW5hbGl6ZUNvZGUo
KSwgeW91IGRvCisgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKC4uLiBleHBsYW5h
dGlvbiAuLi4pKS4gRklOQUxJWkVfQ09ERSgpIHRoZW4KKyAgICAgICAgcHJpbnRzIHlvdXIgZXhw
bGFuYXRpb24gYW5kIHRoZSBkaXNhc3NlbWJsZWQgY29kZSwgaWYKKyAgICAgICAgT3B0aW9uczo6
c2hvd0Rpc2Fzc2VtYmx5IGlzIHNldCB0byB0cnVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0
aG91dERpc2Fzc2VtYmx5KToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZmluYWxpemVDb2Rl
V2l0aERpc2Fzc2VtYmx5KToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGlua0NvZGUpOgor
ICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKToKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6ZHVtcExpbmtTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6TGlu
a0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6Cisg
ICAgICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJh
dGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAg
KEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQ
dXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6dHJ5VG9EaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fz
c2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjp0cnlUb0Rpc2Fzc2Vt
YmxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFj
aGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5h
dGl2ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAg
ICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzcXJ0VGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpmbG9vclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Y2VpbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cm91bmRUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OmV4cFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bG9n
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphYnNUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OnBvd1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRp
b25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogeWFy
ci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGls
ZSk6CisKIDIwMTItMDYtMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbUXRdW01hY10gUkVHUkVTU0lPTihyMTIwNzQyKTogSXQgYnJva2UgdGhl
IGJ1aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MjA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDggQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBB
UEkvSlNWYWx1ZVJlZi5jcHAKICAgICBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAK
ICAgICBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwCisgICAgCisgICAgYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCiAKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCiAgICAgYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjA3ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwIFwKICAg
ICBhc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBcCiAgICAgYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmNwcCBcCisgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIFwKICAgICBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQu
Y3BwIFwKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZp
c2lvbiAxMjA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTczOCw2ICsxNzM4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGFzc2VtYmxlclxMaW5rQnVmZmVyLmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYXNzZW1ibGVyXExpbmtC
dWZmZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2
ICsyMDgsNyBAQAogCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjczRTE1OEVCRDk0
MDA0Q0I5RkYgLyogdWRpczg2LmMgKi87IH07CiAJCTBGRjQyNzRCMTU4RUJFOTEwMDRDQjlGRiAv
KiB1ZGlzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjQyNzNGMTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODYuaCAqLzsgfTsKIAkJMEZGNDI3NEQx
NThFQkZFNjAwNENCOUZGIC8qIHVkaXM4Nl9pdGFiX2hvbGRlci5jIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NEMxNThFQkZFMTAwNENCOUZGIC8q
IHVkaXM4Nl9pdGFiX2hvbGRlci5jICovOyB9OworCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYg
LyogTGlua0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkY0Mjc1NjE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi87IH07
CiAJCTBGRjkyMkQ0MTRGNDZCNDEwMDQxQTI0RSAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTEx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CiAJCTBG
RkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjcsNiArOTI4LDcgQEAK
IAkJMEZGNDI3M0UxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Ni5jICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmM7IG5hbWUgPSB1ZGlzODYuYzsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRp
czg2LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzNGMTU4RUJEOTQwMDRD
QjlGRiAvKiB1ZGlzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gdWRpczg2
Lmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkY0Mjc0QzE1OEVCRkUxMDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9s
ZGVyLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHVkaXM4Nl9pdGFiX2hvbGRl
ci5jOyBwYXRoID0gZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfaXRhYl9ob2xkZXIuYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3NTYxNTkxNEEyMDAwNENCOUZGIC8qIExp
bmtCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0J1
ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMw
MDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
Mjk1LDYgKzIyOTcsNyBAQAogCQkJCTk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJs
ZXJCdWZmZXIuaCAqLywKIAkJCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVy
QnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovLAogCQkJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJC
QyAvKiBDb2RlTG9jYXRpb24uaCAqLywKKwkJCQkwRkY0Mjc1NjE1OTE0QTIwMDA0Q0I5RkYgLyog
TGlua0J1ZmZlci5jcHAgKi8sCiAJCQkJODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtC
dWZmZXIuaCAqLywKIAkJCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCAqLywKIAkJCQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwICovLApAQCAtMzM0MCw2ICszMzQzLDcgQEAKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0
Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0RDE1OEVCRkU2MDA0
Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNlcyAqLywKIAkJCQlDMkU1MjZC
RDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
RjQyNzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyRDU4QzM0MTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorCisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0xpbmtCdWZmZXI6OkNvZGVS
ZWYgTGlua0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KCkKK3sKKyAgICBw
ZXJmb3JtRmluYWxpemF0aW9uKCk7CisgICAgCisgICAgcmV0dXJuIENvZGVSZWYobV9leGVjdXRh
YmxlTWVtb3J5KTsKK30KKworTGlua0J1ZmZlcjo6Q29kZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6
ZUNvZGVXaXRoRGlzYXNzZW1ibHkoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCit7CisgICAgQVNT
RVJUKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSk7CisgICAgCisgICAgQ29kZVJlZiByZXN1bHQg
PSBmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKTsKKyAgICAKKyAgICBkYXRhTG9nKCJH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yICIpOworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9z
dGFydChhcmdMaXN0LCBmb3JtYXQpOworICAgIFdURjo6ZGF0YUxvZ1YoZm9ybWF0LCBhcmdMaXN0
KTsKKyAgICB2YV9lbmQoYXJnTGlzdCk7CisgICAgZGF0YUxvZygiOlxuIik7CisgICAgCisgICAg
ZGF0YUxvZygiICAgIENvZGUgYXQgWyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpICsgcmVzdWx0LnNpemUoKSk7CisgICAgaWYgKCF0cnlUb0Rpc2Fzc2VtYmxlKHJl
c3VsdC5jb2RlKCksIG1fc2l6ZSwgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpKQorICAgICAgICBk
YXRhTG9nKCIgICAgICAgIDxubyBkaXNhc3NlbWJseSBhdmFpbGFibGU+Iik7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZSh2b2lkKiBvd25l
clVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQoreworICAgIEFTU0VSVCghbV9jb2Rl
KTsKKyNpZiAhRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQorICAgIG1fZXhlY3V0YWJsZU1lbW9y
eSA9IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5leGVjdXRhYmxlQ29weSgqbV9nbG9iYWxEYXRh
LCBvd25lclVJRCwgZWZmb3J0KTsKKyAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY29kZSA9IG1fZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKTsKKyAg
ICBtX3NpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29kZVNpemUoKTsKKyAgICBBU1NF
UlQobV9jb2RlKTsKKyNlbHNlCisgICAgbV9pbml0aWFsU2l6ZSA9IG1fYXNzZW1ibGVyLT5tX2Fz
c2VtYmxlci5jb2RlU2l6ZSgpOworICAgIG1fZXhlY3V0YWJsZU1lbW9yeSA9IG1fZ2xvYmFsRGF0
YS0+ZXhlY3V0YWJsZUFsbG9jYXRvci5hbGxvY2F0ZSgqbV9nbG9iYWxEYXRhLCBtX2luaXRpYWxT
aXplLCBvd25lclVJRCwgZWZmb3J0KTsKKyAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY29kZSA9ICh1aW50OF90KiltX2V4ZWN1dGFibGVNZW1vcnkt
PnN0YXJ0KCk7CisgICAgQVNTRVJUKG1fY29kZSk7CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6
bWFrZVdyaXRhYmxlKG1fY29kZSwgbV9pbml0aWFsU2l6ZSk7CisgICAgdWludDhfdCogaW5EYXRh
ID0gKHVpbnQ4X3QqKW1fYXNzZW1ibGVyLT51bmxpbmtlZENvZGUoKTsKKyAgICB1aW50OF90KiBv
dXREYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9jb2RlKTsKKyAgICBpbnQgcmVh
ZFB0ciA9IDA7CisgICAgaW50IHdyaXRlUHRyID0gMDsKKyAgICBWZWN0b3I8TGlua1JlY29yZD4m
IGp1bXBzVG9MaW5rID0gbV9hc3NlbWJsZXItPmp1bXBzVG9MaW5rKCk7CisgICAgdW5zaWduZWQg
anVtcENvdW50ID0ganVtcHNUb0xpbmsuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBqdW1wQ291bnQ7ICsraSkgeworICAgICAgICBpbnQgb2Zmc2V0ID0gcmVhZFB0ciAtIHdy
aXRlUHRyOworICAgICAgICBBU1NFUlQoIShvZmZzZXQgJiAxKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgLy8gQ29weSB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIGxhc3QganVtcCB0byB0aGUg
Y3VycmVudCBvbmUuCisgICAgICAgIHNpemVfdCByZWdpb25TaXplID0ganVtcHNUb0xpbmtbaV0u
ZnJvbSgpIC0gcmVhZFB0cjsKKyAgICAgICAgdWludDE2X3QqIGNvcHlTb3VyY2UgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGluRGF0YSArIHJlYWRQdHIpOworICAgICAgICB1aW50
MTZfdCogY29weUVuZCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oaW5EYXRhICsg
cmVhZFB0ciArIHJlZ2lvblNpemUpOworICAgICAgICB1aW50MTZfdCogY29weURzdCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4ob3V0RGF0YSArIHdyaXRlUHRyKTsKKyAgICAgICAg
QVNTRVJUKCEocmVnaW9uU2l6ZSAlIDIpKTsKKyAgICAgICAgQVNTRVJUKCEocmVhZFB0ciAlIDIp
KTsKKyAgICAgICAgQVNTRVJUKCEod3JpdGVQdHIgJSAyKSk7CisgICAgICAgIHdoaWxlIChjb3B5
U291cmNlICE9IGNvcHlFbmQpCisgICAgICAgICAgICAqY29weURzdCsrID0gKmNvcHlTb3VyY2Ur
KzsKKyAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtPZmZzZXRzKHJlYWRQdHIsIGp1bXBz
VG9MaW5rW2ldLmZyb20oKSwgb2Zmc2V0KTsKKyAgICAgICAgcmVhZFB0ciArPSByZWdpb25TaXpl
OworICAgICAgICB3cml0ZVB0ciArPSByZWdpb25TaXplOworICAgICAgICAgICAgCisgICAgICAg
IC8vIENhbGN1bGF0ZSBhYnNvbHV0ZSBhZGRyZXNzIG9mIHRoZSBqdW1wIHRhcmdldCwgaW4gdGhl
IGNhc2Ugb2YgYmFja3dhcmRzCisgICAgICAgIC8vIGJyYW5jaGVzIHdlIG5lZWQgdG8gYmUgcHJl
Y2lzZSwgZm9yd2FyZCBicmFuY2hlcyB3ZSBhcmUgcGVzc2ltaXN0aWMKKyAgICAgICAgY29uc3Qg
dWludDhfdCogdGFyZ2V0OworICAgICAgICBpZiAoanVtcHNUb0xpbmtbaV0udG8oKSA+PSBqdW1w
c1RvTGlua1tpXS5mcm9tKCkpCisgICAgICAgICAgICB0YXJnZXQgPSBvdXREYXRhICsganVtcHNU
b0xpbmtbaV0udG8oKSAtIG9mZnNldDsgLy8gQ29tcGVuc2F0ZSBmb3Igd2hhdCB3ZSBoYXZlIGNv
bGxhcHNlZCBzbyBmYXIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGFyZ2V0ID0gb3V0RGF0
YSArIGp1bXBzVG9MaW5rW2ldLnRvKCkgLSBtX2Fzc2VtYmxlci0+ZXhlY3V0YWJsZU9mZnNldEZv
cihqdW1wc1RvTGlua1tpXS50bygpKTsKKyAgICAgICAgICAgIAorICAgICAgICBKdW1wTGlua1R5
cGUganVtcExpbmtUeXBlID0gbV9hc3NlbWJsZXItPmNvbXB1dGVKdW1wVHlwZShqdW1wc1RvTGlu
a1tpXSwgb3V0RGF0YSArIHdyaXRlUHRyLCB0YXJnZXQpOworICAgICAgICAvLyBDb21wYWN0IGJy
YW5jaCBpZiB3ZSBjYW4uLi4KKyAgICAgICAgaWYgKG1fYXNzZW1ibGVyLT5jYW5Db21wYWN0KGp1
bXBzVG9MaW5rW2ldLnR5cGUoKSkpIHsKKyAgICAgICAgICAgIC8vIFN0ZXAgYmFjayBpbiB0aGUg
d3JpdGUgc3RyZWFtCisgICAgICAgICAgICBpbnQzMl90IGRlbHRhID0gbV9hc3NlbWJsZXItPmp1
bXBTaXplRGVsdGEoanVtcHNUb0xpbmtbaV0udHlwZSgpLCBqdW1wTGlua1R5cGUpOworICAgICAg
ICAgICAgaWYgKGRlbHRhKSB7CisgICAgICAgICAgICAgICAgd3JpdGVQdHIgLT0gZGVsdGE7Cisg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtPZmZzZXRzKGp1bXBzVG9MaW5r
W2ldLmZyb20oKSAtIGRlbHRhLCByZWFkUHRyLCByZWFkUHRyIC0gd3JpdGVQdHIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGp1bXBzVG9MaW5rW2ldLnNldEZyb20od3JpdGVQ
dHIpOworICAgIH0KKyAgICAvLyBDb3B5IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGxhc3QganVtcAor
ICAgIG1lbWNweShvdXREYXRhICsgd3JpdGVQdHIsIGluRGF0YSArIHJlYWRQdHIsIG1faW5pdGlh
bFNpemUgLSByZWFkUHRyKTsKKyAgICBtX2Fzc2VtYmxlci0+cmVjb3JkTGlua09mZnNldHMocmVh
ZFB0ciwgbV9pbml0aWFsU2l6ZSwgcmVhZFB0ciAtIHdyaXRlUHRyKTsKKyAgICAgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7CisgICAgICAgIHVpbnQ4
X3QqIGxvY2F0aW9uID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLmZyb20oKTsKKyAgICAgICAg
dWludDhfdCogdGFyZ2V0ID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLnRvKCkgLSBtX2Fzc2Vt
Ymxlci0+ZXhlY3V0YWJsZU9mZnNldEZvcihqdW1wc1RvTGlua1tpXS50bygpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXItPmxpbmsoanVtcHNUb0xpbmtbaV0sIGxvY2F0aW9uLCB0YXJnZXQpOworICAg
IH0KKworICAgIGp1bXBzVG9MaW5rLmNsZWFyKCk7CisgICAgbV9zaXplID0gd3JpdGVQdHIgKyBt
X2luaXRpYWxTaXplIC0gcmVhZFB0cjsKKyAgICBtX2V4ZWN1dGFibGVNZW1vcnktPnNocmluayht
X3NpemUpOworCisjaWYgRFVNUF9MSU5LX1NUQVRJU1RJQ1MKKyAgICBkdW1wTGlua1N0YXRpc3Rp
Y3MobV9jb2RlLCBtX2luaXRpYWxTaXplLCBtX3NpemUpOworI2VuZGlmCisjaWYgRFVNUF9DT0RF
CisgICAgZHVtcENvZGUobV9jb2RlLCBtX3NpemUpOworI2VuZGlmCisjZW5kaWYKK30KKwordm9p
ZCBMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKK3sKKyNpZm5kZWYgTkRFQlVHCisg
ICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOworI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNU
SU9OKQorICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1ha2VFeGVjdXRhYmxlKGNvZGUoKSwgbV9p
bml0aWFsU2l6ZSk7CisjZWxzZQorICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1ha2VFeGVjdXRh
YmxlKGNvZGUoKSwgbV9zaXplKTsKKyNlbmRpZgorICAgIE1hY3JvQXNzZW1ibGVyOjpjYWNoZUZs
dXNoKGNvZGUoKSwgbV9zaXplKTsKK30KKworI2lmIERVTVBfTElOS19TVEFUSVNUSUNTCit2b2lk
IExpbmtCdWZmZXI6OmR1bXBMaW5rU3RhdGlzdGljcyh2b2lkKiBjb2RlLCBzaXplX3QgaW5pdGlh
bGl6ZVNpemUsIHNpemVfdCBmaW5hbFNpemUpCit7CisgICAgc3RhdGljIHVuc2lnbmVkIGxpbmtD
b3VudCA9IDA7CisgICAgc3RhdGljIHVuc2lnbmVkIHRvdGFsSW5pdGlhbFNpemUgPSAwOworICAg
IHN0YXRpYyB1bnNpZ25lZCB0b3RhbEZpbmFsU2l6ZSA9IDA7CisgICAgbGlua0NvdW50Kys7Cisg
ICAgdG90YWxJbml0aWFsU2l6ZSArPSBpbml0aWFsU2l6ZTsKKyAgICB0b3RhbEZpbmFsU2l6ZSAr
PSBmaW5hbFNpemU7CisgICAgZGF0YUxvZygibGluayAlcDogb3JpZyAldSwgY29tcGFjdCAldSAo
ZGVsdGEgJXUsICUuMmYlJSlcbiIsIAorICAgICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluaXRpYWxTaXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNpemUgLSBmaW5hbFNpemUp
LAorICAgICAgICAgICAgMTAwLjAgKiAoaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpIC8gaW5pdGlh
bFNpemUpOworICAgIGRhdGFMb2coIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRl
bHRhICV1LCAlLjJmJSUpXG4iLCAKKyAgICAgICAgICAgIGxpbmtDb3VudCwgdG90YWxJbml0aWFs
U2l6ZSwgdG90YWxGaW5hbFNpemUsIHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSwK
KyAgICAgICAgICAgIDEwMC4wICogKHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSkg
LyB0b3RhbEluaXRpYWxTaXplKTsKK30KKyNlbmRpZgorCisjaWYgRFVNUF9DT0RFCit2b2lkIExp
bmtCdWZmZXI6OmR1bXBDb2RlKHZvaWQqIGNvZGUsIHNpemVfdCBzaXplKQoreworI2lmIENQVShB
Uk1fVEhVTUIyKQorICAgIC8vIER1bXAgdGhlIGdlbmVyYXRlZCBjb2RlIGluIGFuIGFzbSBmaWxl
IGZvcm1hdCB0aGF0IGNhbiBiZSBhc3NlbWJsZWQgYW5kIHRoZW4gZGlzYXNzZW1ibGVkCisgICAg
Ly8gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gRm9yIGV4YW1wbGUsIHNhdmUgdGhpcyBvdXRwdXQg
YXMgaml0LnM6CisgICAgLy8gICBnY2MgLWFyY2ggYXJtdjcgLWMgaml0LnMKKyAgICAvLyAgIG90
b29sIC10diBqaXQubworICAgIHN0YXRpYyB1bnNpZ25lZCBjb2RlQ291bnQgPSAwOworICAgIHVu
c2lnbmVkIHNob3J0KiB0Y29kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Kj4oY29kZSk7
CisgICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZihzaG9ydCk7CisgICAgY2hhciBuYW1l
QnVmWzEyOF07CisgICAgc25wcmludGYobmFtZUJ1Ziwgc2l6ZW9mKG5hbWVCdWYpLCAiX2pzY19q
aXQldSIsIGNvZGVDb3VudCsrKTsKKyAgICBkYXRhTG9nKCJcdC5zeW50YXggdW5pZmllZFxuIgor
ICAgICAgICAgICAgIlx0LnNlY3Rpb25cdF9fVEVYVCxfX3RleHQscmVndWxhcixwdXJlX2luc3Ry
dWN0aW9uc1xuIgorICAgICAgICAgICAgIlx0Lmdsb2JsXHQlc1xuIgorICAgICAgICAgICAgIlx0
LmFsaWduIDJcbiIKKyAgICAgICAgICAgICJcdC5jb2RlIDE2XG4iCisgICAgICAgICAgICAiXHQu
dGh1bWJfZnVuY1x0JXNcbiIKKyAgICAgICAgICAgICIjICVwXG4iCisgICAgICAgICAgICAiJXM6
XG4iLCBuYW1lQnVmLCBuYW1lQnVmLCBjb2RlLCBuYW1lQnVmKTsKKyAgICAgICAgCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCisgICAgICAgIGRhdGFMb2coIlx0LnNo
b3J0XHQweCV4XG4iLCB0Y29kZVtpXSk7CisjZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQorICAg
IC8vICAgZ2NjIC1jIGppdC5zCisgICAgLy8gICBvYmpkdW1wIC1EIGppdC5vCisgICAgc3RhdGlj
IHVuc2lnbmVkIGNvZGVDb3VudCA9IDA7CisgICAgdW5zaWduZWQgaW50KiB0Y29kZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludCo+KGNvZGUpOworICAgIHNpemVfdCB0c2l6ZSA9IHNpemUgLyBz
aXplb2YodW5zaWduZWQgaW50KTsKKyAgICBjaGFyIG5hbWVCdWZbMTI4XTsKKyAgICBzbnByaW50
ZihuYW1lQnVmLCBzaXplb2YobmFtZUJ1ZiksICJfanNjX2ppdCV1IiwgY29kZUNvdW50KyspOwor
ICAgIGRhdGFMb2coIlx0Lmdsb2JsXHQlc1xuIgorICAgICAgICAgICAgIlx0LmFsaWduIDRcbiIK
KyAgICAgICAgICAgICJcdC5jb2RlIDMyXG4iCisgICAgICAgICAgICAiXHQudGV4dFxuIgorICAg
ICAgICAgICAgIiMgJXBcbiIKKyAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIGNvZGUsIG5h
bWVCdWYpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCisgICAg
ICAgIGRhdGFMb2coIlx0LmxvbmdcdDB4JXhcbiIsIHRjb2RlW2ldKTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MywxMyArMTkzLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpLm1fb2Zm
c2V0OwogICAgIH0KIAotICAgIC8vIFVwb24gY29tcGxldGlvbiBvZiBhbGwgcGF0Y2hpbmcgJ2Zp
bmFsaXplQ29kZSgpJyBzaG91bGQgYmUgY2FsbGVkIG9uY2UgdG8gY29tcGxldGUgZ2VuZXJhdGlv
biBvZiB0aGUgY29kZS4KLSAgICBDb2RlUmVmIGZpbmFsaXplQ29kZSgpCi0gICAgewotICAgICAg
ICBwZXJmb3JtRmluYWxpemF0aW9uKCk7Ci0KLSAgICAgICAgcmV0dXJuIENvZGVSZWYobV9leGVj
dXRhYmxlTWVtb3J5KTsKLSAgICB9CisgICAgLy8gVXBvbiBjb21wbGV0aW9uIG9mIGFsbCBwYXRj
aGluZyAnRklOQUxJWkVfQ09ERSgpJyBzaG91bGQgYmUgY2FsbGVkIG9uY2UgdG8KKyAgICAvLyBj
b21wbGV0ZSBnZW5lcmF0aW9uIG9mIHRoZSBjb2RlLiBBbHRlcm5hdGl2ZWx5LCBjYWxsCisgICAg
Ly8gZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KCkgZGlyZWN0bHkgaWYgeW91IGhhdmUg
eW91ciBvd24gd2F5IG9mCisgICAgLy8gZGlzcGxheWluZyBkaXNhc3NlbWJseS4KKyAgICAKKyAg
ICBDb2RlUmVmIGZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpOworICAgIENvZGVSZWYg
ZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZf
QVRUUklCVVRFX1BSSU5URigyLCAzKTsKIAogICAgIENvZGVQdHIgdHJhbXBvbGluZUF0KExhYmVs
IGxhYmVsKQogICAgIHsKQEAgLTIzMSwxNjkgKzIzMSwxNiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV9jb2RlOwogICAgIH0KIAotICAgIHZvaWQgbGlua0NvZGUodm9pZCogb3duZXJVSUQs
IEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9j
b2RlKTsKLSNpZiAhRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQotICAgICAgICBtX2V4ZWN1dGFi
bGVNZW1vcnkgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuZXhlY3V0YWJsZUNvcHkoKm1fZ2xv
YmFsRGF0YSwgb3duZXJVSUQsIGVmZm9ydCk7Ci0gICAgICAgIGlmICghbV9leGVjdXRhYmxlTWVt
b3J5KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2NvZGUgPSBtX2V4ZWN1dGFibGVN
ZW1vcnktPnN0YXJ0KCk7Ci0gICAgICAgIG1fc2l6ZSA9IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxl
ci5jb2RlU2l6ZSgpOwotICAgICAgICBBU1NFUlQobV9jb2RlKTsKLSNlbHNlCi0gICAgICAgIG1f
aW5pdGlhbFNpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29kZVNpemUoKTsKLSAgICAg
ICAgbV9leGVjdXRhYmxlTWVtb3J5ID0gbV9nbG9iYWxEYXRhLT5leGVjdXRhYmxlQWxsb2NhdG9y
LmFsbG9jYXRlKCptX2dsb2JhbERhdGEsIG1faW5pdGlhbFNpemUsIG93bmVyVUlELCBlZmZvcnQp
OwotICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9jb2RlID0gKHVpbnQ4X3QqKW1fZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKTsK
LSAgICAgICAgQVNTRVJUKG1fY29kZSk7Ci0gICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1h
a2VXcml0YWJsZShtX2NvZGUsIG1faW5pdGlhbFNpemUpOwotICAgICAgICB1aW50OF90KiBpbkRh
dGEgPSAodWludDhfdCopbV9hc3NlbWJsZXItPnVubGlua2VkQ29kZSgpOwotICAgICAgICB1aW50
OF90KiBvdXREYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9jb2RlKTsKLSAgICAg
ICAgaW50IHJlYWRQdHIgPSAwOwotICAgICAgICBpbnQgd3JpdGVQdHIgPSAwOwotICAgICAgICBW
ZWN0b3I8TGlua1JlY29yZD4mIGp1bXBzVG9MaW5rID0gbV9hc3NlbWJsZXItPmp1bXBzVG9MaW5r
KCk7Ci0gICAgICAgIHVuc2lnbmVkIGp1bXBDb3VudCA9IGp1bXBzVG9MaW5rLnNpemUoKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gcmVhZFB0ciAtIHdyaXRlUHRyOwotICAgICAgICAgICAgQVNTRVJU
KCEob2Zmc2V0ICYgMSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBDb3B5IHRoZSBp
bnN0cnVjdGlvbnMgZnJvbSB0aGUgbGFzdCBqdW1wIHRvIHRoZSBjdXJyZW50IG9uZS4KLSAgICAg
ICAgICAgIHNpemVfdCByZWdpb25TaXplID0ganVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gcmVhZFB0
cjsKLSAgICAgICAgICAgIHVpbnQxNl90KiBjb3B5U291cmNlID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDE2X3QqPihpbkRhdGEgKyByZWFkUHRyKTsKLSAgICAgICAgICAgIHVpbnQxNl90KiBj
b3B5RW5kID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihpbkRhdGEgKyByZWFkUHRy
ICsgcmVnaW9uU2l6ZSk7Ci0gICAgICAgICAgICB1aW50MTZfdCogY29weURzdCA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4ob3V0RGF0YSArIHdyaXRlUHRyKTsKLSAgICAgICAgICAg
IEFTU0VSVCghKHJlZ2lvblNpemUgJSAyKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIShyZWFkUHRy
ICUgMikpOwotICAgICAgICAgICAgQVNTRVJUKCEod3JpdGVQdHIgJSAyKSk7Ci0gICAgICAgICAg
ICB3aGlsZSAoY29weVNvdXJjZSAhPSBjb3B5RW5kKQotICAgICAgICAgICAgICAgICpjb3B5RHN0
KysgPSAqY29weVNvdXJjZSsrOwotICAgICAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtP
ZmZzZXRzKHJlYWRQdHIsIGp1bXBzVG9MaW5rW2ldLmZyb20oKSwgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIHJlYWRQdHIgKz0gcmVnaW9uU2l6ZTsKLSAgICAgICAgICAgIHdyaXRlUHRyICs9IHJlZ2lv
blNpemU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBhYnNvbHV0ZSBh
ZGRyZXNzIG9mIHRoZSBqdW1wIHRhcmdldCwgaW4gdGhlIGNhc2Ugb2YgYmFja3dhcmRzCi0gICAg
ICAgICAgICAvLyBicmFuY2hlcyB3ZSBuZWVkIHRvIGJlIHByZWNpc2UsIGZvcndhcmQgYnJhbmNo
ZXMgd2UgYXJlIHBlc3NpbWlzdGljCi0gICAgICAgICAgICBjb25zdCB1aW50OF90KiB0YXJnZXQ7
Ci0gICAgICAgICAgICBpZiAoanVtcHNUb0xpbmtbaV0udG8oKSA+PSBqdW1wc1RvTGlua1tpXS5m
cm9tKCkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ld
LnRvKCkgLSBvZmZzZXQ7IC8vIENvbXBlbnNhdGUgZm9yIHdoYXQgd2UgaGF2ZSBjb2xsYXBzZWQg
c28gZmFyCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gb3V0RGF0
YSArIGp1bXBzVG9MaW5rW2ldLnRvKCkgLSBtX2Fzc2VtYmxlci0+ZXhlY3V0YWJsZU9mZnNldEZv
cihqdW1wc1RvTGlua1tpXS50bygpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSnVtcExp
bmtUeXBlIGp1bXBMaW5rVHlwZSA9IG1fYXNzZW1ibGVyLT5jb21wdXRlSnVtcFR5cGUoanVtcHNU
b0xpbmtbaV0sIG91dERhdGEgKyB3cml0ZVB0ciwgdGFyZ2V0KTsKLSAgICAgICAgICAgIC8vIENv
bXBhY3QgYnJhbmNoIGlmIHdlIGNhbi4uLgotICAgICAgICAgICAgaWYgKG1fYXNzZW1ibGVyLT5j
YW5Db21wYWN0KGp1bXBzVG9MaW5rW2ldLnR5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBT
dGVwIGJhY2sgaW4gdGhlIHdyaXRlIHN0cmVhbQotICAgICAgICAgICAgICAgIGludDMyX3QgZGVs
dGEgPSBtX2Fzc2VtYmxlci0+anVtcFNpemVEZWx0YShqdW1wc1RvTGlua1tpXS50eXBlKCksIGp1
bXBMaW5rVHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbHRhKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHdyaXRlUHRyIC09IGRlbHRhOwotICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci0+cmVjb3JkTGlua09mZnNldHMoanVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQ
dHIsIHJlYWRQdHIgLSB3cml0ZVB0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAganVtcHNUb0xpbmtbaV0uc2V0RnJvbSh3cml0ZVB0cik7Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gQ29weSBldmVyeXRoaW5nIGFmdGVyIHRoZSBsYXN0IGp1bXAKLSAgICAg
ICAgbWVtY3B5KG91dERhdGEgKyB3cml0ZVB0ciwgaW5EYXRhICsgcmVhZFB0ciwgbV9pbml0aWFs
U2l6ZSAtIHJlYWRQdHIpOwotICAgICAgICBtX2Fzc2VtYmxlci0+cmVjb3JkTGlua09mZnNldHMo
cmVhZFB0ciwgbV9pbml0aWFsU2l6ZSwgcmVhZFB0ciAtIHdyaXRlUHRyKTsKLSAgICAgICAgCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkgewotICAgICAg
ICAgICAgdWludDhfdCogbG9jYXRpb24gPSBvdXREYXRhICsganVtcHNUb0xpbmtbaV0uZnJvbSgp
OwotICAgICAgICAgICAgdWludDhfdCogdGFyZ2V0ID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ld
LnRvKCkgLSBtX2Fzc2VtYmxlci0+ZXhlY3V0YWJsZU9mZnNldEZvcihqdW1wc1RvTGlua1tpXS50
bygpKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLT5saW5rKGp1bXBzVG9MaW5rW2ldLCBsb2Nh
dGlvbiwgdGFyZ2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGp1bXBzVG9MaW5rLmNsZWFyKCk7
Ci0gICAgICAgIG1fc2l6ZSA9IHdyaXRlUHRyICsgbV9pbml0aWFsU2l6ZSAtIHJlYWRQdHI7Ci0g
ICAgICAgIG1fZXhlY3V0YWJsZU1lbW9yeS0+c2hyaW5rKG1fc2l6ZSk7Ci0KLSNpZiBEVU1QX0xJ
TktfU1RBVElTVElDUwotICAgICAgICBkdW1wTGlua1N0YXRpc3RpY3MobV9jb2RlLCBtX2luaXRp
YWxTaXplLCBtX3NpemUpOwotI2VuZGlmCi0jaWYgRFVNUF9DT0RFCi0gICAgICAgIGR1bXBDb2Rl
KG1fY29kZSwgbV9zaXplKTsKLSNlbmRpZgotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBwZXJm
b3JtRmluYWxpemF0aW9uKCkKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBBU1NFUlQo
IW1fY29tcGxldGVkKTsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgICAgIG1fY29t
cGxldGVkID0gdHJ1ZTsKLSNlbmRpZgorICAgIHZvaWQgbGlua0NvZGUodm9pZCogb3duZXJVSUQs
IEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCk7CiAKLSNpZiBFTkFCTEUoQlJBTkNIX0NPTVBB
Q1RJT04pCi0gICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1ha2VFeGVjdXRhYmxlKGNvZGUo
KSwgbV9pbml0aWFsU2l6ZSk7Ci0jZWxzZQotICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjpt
YWtlRXhlY3V0YWJsZShjb2RlKCksIG1fc2l6ZSk7Ci0jZW5kaWYKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OmNhY2hlRmx1c2goY29kZSgpLCBtX3NpemUpOwotICAgIH0KKyAgICB2b2lkIHBlcmZv
cm1GaW5hbGl6YXRpb24oKTsKIAogI2lmIERVTVBfTElOS19TVEFUSVNUSUNTCi0gICAgc3RhdGlj
IHZvaWQgZHVtcExpbmtTdGF0aXN0aWNzKHZvaWQqIGNvZGUsIHNpemVfdCBpbml0aWFsU2l6ZSwg
c2l6ZV90IGZpbmFsU2l6ZSkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBsaW5rQ291
bnQgPSAwOwotICAgICAgICBzdGF0aWMgdW5zaWduZWQgdG90YWxJbml0aWFsU2l6ZSA9IDA7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCB0b3RhbEZpbmFsU2l6ZSA9IDA7Ci0gICAgICAgIGxpbmtD
b3VudCsrOwotICAgICAgICB0b3RhbEluaXRpYWxTaXplICs9IGluaXRpYWxTaXplOwotICAgICAg
ICB0b3RhbEZpbmFsU2l6ZSArPSBmaW5hbFNpemU7Ci0gICAgICAgIGRhdGFMb2coImxpbmsgJXA6
IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAlLjJmJSUpXG4iLCAKLSAgICAgICAgICAg
ICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxTaXplKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbml0aWFsU2l6ZSAtIGZpbmFsU2l6ZSksCi0gICAgICAgICAgICAgICAg
ICAgIDEwMC4wICogKGluaXRpYWxTaXplIC0gZmluYWxTaXplKSAvIGluaXRpYWxTaXplKTsKLSAg
ICAgICAgZGF0YUxvZygiXHR0b3RhbCAldTogb3JpZyAldSwgY29tcGFjdCAldSAoZGVsdGEgJXUs
ICUuMmYlJSlcbiIsIAotICAgICAgICAgICAgICAgICAgICBsaW5rQ291bnQsIHRvdGFsSW5pdGlh
bFNpemUsIHRvdGFsRmluYWxTaXplLCB0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUs
Ci0gICAgICAgICAgICAgICAgICAgIDEwMC4wICogKHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZp
bmFsU2l6ZSkgLyB0b3RhbEluaXRpYWxTaXplKTsKLSAgICB9CisgICAgc3RhdGljIHZvaWQgZHVt
cExpbmtTdGF0aXN0aWNzKHZvaWQqIGNvZGUsIHNpemVfdCBpbml0aWFsU2l6ZSwgc2l6ZV90IGZp
bmFsU2l6ZSk7CiAjZW5kaWYKICAgICAKICNpZiBEVU1QX0NPREUKLSAgICBzdGF0aWMgdm9pZCBk
dW1wQ29kZSh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSAgICB7Ci0jaWYgQ1BVKEFSTV9USFVN
QjIpCi0gICAgICAgIC8vIER1bXAgdGhlIGdlbmVyYXRlZCBjb2RlIGluIGFuIGFzbSBmaWxlIGZv
cm1hdCB0aGF0IGNhbiBiZSBhc3NlbWJsZWQgYW5kIHRoZW4gZGlzYXNzZW1ibGVkCi0gICAgICAg
IC8vIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIEZvciBleGFtcGxlLCBzYXZlIHRoaXMgb3V0cHV0
IGFzIGppdC5zOgotICAgICAgICAvLyAgIGdjYyAtYXJjaCBhcm12NyAtYyBqaXQucwotICAgICAg
ICAvLyAgIG90b29sIC10diBqaXQubwotICAgICAgICBzdGF0aWMgdW5zaWduZWQgY29kZUNvdW50
ID0gMDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQqIHRjb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgc2hvcnQqPihjb2RlKTsKLSAgICAgICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZihz
aG9ydCk7Ci0gICAgICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgICAgICBzbnByaW50ZihuYW1l
QnVmLCBzaXplb2YobmFtZUJ1ZiksICJfanNjX2ppdCV1IiwgY29kZUNvdW50KyspOwotICAgICAg
ICBkYXRhTG9nKCJcdC5zeW50YXggdW5pZmllZFxuIgotICAgICAgICAgICAgICAgICAgICAiXHQu
c2VjdGlvblx0X19URVhULF9fdGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rpb25zXG4iCi0gICAg
ICAgICAgICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKLSAgICAgICAgICAgICAgICAgICAgIlx0
LmFsaWduIDJcbiIKLSAgICAgICAgICAgICAgICAgICAgIlx0LmNvZGUgMTZcbiIKLSAgICAgICAg
ICAgICAgICAgICAgIlx0LnRodW1iX2Z1bmNcdCVzXG4iCi0gICAgICAgICAgICAgICAgICAgICIj
ICVwXG4iCi0gICAgICAgICAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIG5hbWVCdWYsIGNv
ZGUsIG5hbWVCdWYpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRzaXplOyBpKyspCi0gICAgICAgICAgICBkYXRhTG9nKCJcdC5zaG9ydFx0MHgleFxuIiwgdGNv
ZGVbaV0pOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICAgICAgLy8gICBnY2MgLWMg
aml0LnMKLSAgICAgICAgLy8gICBvYmpkdW1wIC1EIGppdC5vCi0gICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBjb2RlQ291bnQgPSAwOwotICAgICAgICB1bnNpZ25lZCBpbnQqIHRjb2RlID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Kj4oY29kZSk7Ci0gICAgICAgIHNpemVfdCB0c2l6ZSA9IHNpemUg
LyBzaXplb2YodW5zaWduZWQgaW50KTsKLSAgICAgICAgY2hhciBuYW1lQnVmWzEyOF07Ci0gICAg
ICAgIHNucHJpbnRmKG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2Rl
Q291bnQrKyk7Ci0gICAgICAgIGRhdGFMb2coIlx0Lmdsb2JsXHQlc1xuIgotICAgICAgICAgICAg
ICAgICAgICAiXHQuYWxpZ24gNFxuIgotICAgICAgICAgICAgICAgICAgICAiXHQuY29kZSAzMlxu
IgotICAgICAgICAgICAgICAgICAgICAiXHQudGV4dFxuIgotICAgICAgICAgICAgICAgICAgICAi
IyAlcFxuIgotICAgICAgICAgICAgICAgICAgICAiJXM6XG4iLCBuYW1lQnVmLCBjb2RlLCBuYW1l
QnVmKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHNpemU7IGkrKykKLSAg
ICAgICAgICAgIGRhdGFMb2coIlx0LmxvbmdcdDB4JXhcbiIsIHRjb2RlW2ldKTsKLSNlbmRpZgot
ICAgIH0KKyAgICBzdGF0aWMgdm9pZCBkdW1wQ29kZSh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSk7
CiAjZW5kaWYKICAgICAKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVj
dXRhYmxlTWVtb3J5OwpAQCAtNDEwLDYgKzI1NywyNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
CisvLyBVc2UgdGhpcyB0byBmaW5hbGl6ZSBjb2RlLCBsaWtlIHNvOgorLy8KKy8vIENvZGVSZWYg
Y29kZSA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJteSBzdXBlciB0aGluZ3kgbnVtYmVy
ICVkIiwgbnVtYmVyKSk7CisvLworLy8gV2hpY2gsIGluIGRpc2Fzc2VtYmx5IG1vZGUsIHdpbGwg
cHJpbnQ6CisvLworLy8gR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBteSBzdXBlciB0aGluZ3kgbnVt
YmVyIDQyOgorLy8gICAgIENvZGUgYXQgWzB4MTIzNDU2LCAweDIzNDU2N106CisvLyAgICAgICAg
IDB4MTIzNDU2OiBtb3YgJDAsIDAKKy8vICAgICAgICAgMHgxMjM0NWE6IHJldAorLy8KKy8vIC4u
LiBhbmQgc28gb24uCisvLworLy8gTm90ZSB0aGF0IHRoZSBkYXRhTG9nQXJndW1lbnRzRm9ySGVh
ZGluZyBhcmUgb25seSBldmFsdWF0ZWQgd2hlbiBzaG93RGlzYXNzZW1ibHkKKy8vIGlzIHRydWUs
IHNvIHlvdSBjYW4gaGlkZSBleHBlbnNpdmUgZGlzYXNzZW1ibHktb25seSBjb21wdXRhdGlvbnMg
aW5zaWRlIHRoZXJlLgorCisjZGVmaW5lIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlclJlZmVyZW5j
ZSwgZGF0YUxvZ0FyZ3VtZW50c0ZvckhlYWRpbmcpICBcCisgICAgKFVOTElLRUxZKE9wdGlvbnM6
OnNob3dEaXNhc3NlbWJseSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ID8gKChsaW5rQnVmZmVyUmVmZXJlbmNlKS5maW5hbGl6ZUNvZGVXaXRoRGlzYXNzZW1ibHkgZGF0
YUxvZ0FyZ3VtZW50c0ZvckhlYWRpbmcpIFwKKyAgICAgOiAobGlua0J1ZmZlclJlZmVyZW5jZSku
ZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KCkpCisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNp
b24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsOSBAQAogI2lmbmRlZiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWZfaAogI2RlZmluZSBNYWNyb0Fzc2VtYmxlckNvZGVSZWZfaAogCisj
aW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5o
IgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBA
IC0zNjcsNiArMzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1l
bW9yeS0+c2l6ZUluQnl0ZXMoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCB0cnlUb0Rpc2Fzc2Vt
YmxlKGNvbnN0IGNoYXIqIHByZWZpeCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OnRyeVRvRGlzYXNzZW1ibGUobV9jb2RlUHRyLCBzaXplKCksIHByZWZpeCwgV1RGOjpkYXRhRmls
ZSgpKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV9jb2RlUHRyOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMCwx
MCArMjIwLDkgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBlbnRyeQogICAg
IGxpbmsobGlua0J1ZmZlcik7CiAgICAgc3BlY3VsYXRpdmUubGlua09TUkVudHJpZXMobGlua0J1
ZmZlcik7CiAKLSAgICBlbnRyeSA9IEpJVENvZGUobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSwg
SklUQ29kZTo6REZHSklUKTsKLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZW50
cnkudHJ5VG9EaXNhc3NlbWJsZSgpOwotI2VuZGlmCisgICAgZW50cnkgPSBKSVRDb2RlKAorICAg
ICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiREZHIHByb2dyYW0vZXZhbCBDb2RlQmxv
Y2sgJXAiLCBtX2NvZGVCbG9jaykpLAorICAgICAgICBKSVRDb2RlOjpERkdKSVQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0zMDUsMTAgKzMwNCw5IEBAIGJvb2wgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbihKSVRDb2QKICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbEFyaXR5Q2hlY2ss
IG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hl
Y2sgOiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKTsKIAogICAgIGVudHJ5V2l0aEFyaXR5Q2hlY2sg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7Ci0gICAgZW50cnkgPSBKSVRDb2Rl
KGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCksIEpJVENvZGU6OkRGR0pJVCk7Ci0jaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQotICAgIGVudHJ5LnRyeVRvRGlzYXNzZW1ibGUoKTsKLSNlbmRp
ZgorICAgIGVudHJ5ID0gSklUQ29kZSgKKyAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCAoIkRGRyBmdW5jdGlvbiBDb2RlQmxvY2sgJXAiLCBtX2NvZGVCbG9jaykpLAorICAgICAgICBK
SVRDb2RlOjpERkdKSVQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAx
MjA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDExICs3OSwxMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhpdENvbXBpbGVyLmNvbXBpbGVFeGl0KGV4aXQs
IHJlY292ZXJ5KTsKICAgICAgICAgCiAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmds
b2JhbERhdGEsICZqaXQsIGNvZGVCbG9jayk7Ci0gICAgICAgIGV4aXQubV9jb2RlID0gcGF0Y2hC
dWZmZXIuZmluYWxpemVDb2RlKCk7Ci0KLSNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgIGRhdGFMb2coIk9TUiBleGl0IGNvZGUgYXQgWyVwLCAlcCkuXG4iLCBwYXRjaEJ1ZmZl
ci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHBhdGNoQnVmZmVyLmRlYnVnQWRk
cmVzcygpKSArIHBhdGNoQnVmZmVyLmRlYnVnU2l6ZSgpKTsKLSNlbmRpZgorICAgICAgICBleGl0
Lm1fY29kZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAg
ICAgICAgICgiREZHIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZyb20gQ29kZUJsb2Nr
ICVwIiwKKyAgICAgICAgICAgICBleGl0SW5kZXgsIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsCisgICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmluZyhl
eGl0Lm1fa2luZCksIGNvZGVCbG9jaykpOwogICAgIH0KICAgICAKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMDc4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NSw3ICsxNTUsMTAgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNz
U3R1YgogICAgIAogICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVz
dG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBz
bG93Q2FzZUxhYmVsKTsKICAgICAKLSAgICBzdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFs
aXplQ29kZSgpOworICAgIHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0
Y2hCdWZmZXIsCisgICAgICAgICgiREZHIHByb3RvdHlwZSBjaGFpbiBhY2Nlc3Mgc3R1YiBmb3Ig
Q29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgZXhlYy0+Y29kZUJsb2Nr
KCksIHN1Y2Nlc3NMYWJlbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9CiAKIHN0YXRpYyBib29s
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMjA2LDcgKzIwOSwxMSBAQCBzdGF0aWMgYm9v
bCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIAogICAgICAgICBsaW5rUmVz
dG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdHViSW5mbywg
c3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgCi0gICAgICAgIHN0dWJJbmZv
LnN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgICAgIHN0dWJJ
bmZvLnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgICAgIHBhdGNoQnVmZmVy
LAorICAgICAgICAgICAgKCJERkcgR2V0QnlJZCBhcnJheSBsZW5ndGggc3R1YiBmb3IgQ29kZUJs
b2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAg
ICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOwogICAgICAgICAKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNv
ZGVCbG9jayk7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3Ry
dWN0Q2hlY2spLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby5zdHViUm91dGluZS5jb2RlKCkp
KTsKQEAgLTQwNSw3ICs0MTIsMTEgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChF
eGVjU3RhdAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhoYW5kbGVyQ2FsbCwgbG9va3Vw
RXhjZXB0aW9uSGFuZGxlckluU3R1Yik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZSgpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3R1YlJvdXRpbmUgPSBGSU5BTEla
RV9DT0RFKAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICAgICAoIkRGRyBHZXRC
eUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNzIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2lu
dCAlcCIsCisgICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRj
aC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIAog
ICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QtPmxpc3RbbGlzdEluZGV4XS5zZXQoKmds
b2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0dWJSb3V0aW5lLCBzdHJ1
Y3R1cmUsIGlzRGlyZWN0KTsKICAgICAgICAgCkBAIC02MTEsNyArNjIyLDExIEBAIHN0YXRpYyB2
b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1
cmVMYWJlbCk7CiAgICAgICAgICAgICAKLSAgICBzdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZp
bmFsaXplQ29kZSgpOworICAgIHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAg
cGF0Y2hCdWZmZXIsCisgICAgICAgICgiREZHIFB1dEJ5SWQgcmVwbGFjZSBzdHViIGZvciBDb2Rl
QmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAg
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCkBAIC03MDcsNyArNzIy
LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICBlbHNlCiAgICAg
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbHVyZUNhc2VzLCBmYWlsdXJlTGFiZWwpOwogICAgICAg
ICAgICAgCi0gICAgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAg
ICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAg
ICAgICAoIkRGRyBQdXRCeUlkIHRyYW5zaXRpb24gc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAorICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIH0KIAogc3RhdGlj
IGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0S2luZCBwdXRLaW5kKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMTIwNzgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAg
ICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgY29tcGlsZU9TUkV4aXQpOwog
ICAgIAotICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVu
ayIpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAx
MjA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTggQEAKICNpZm5kZWYgRGlzYXNzZW1i
bGVyX2gKICNkZWZpbmUgRGlzYXNzZW1ibGVyX2gKIAotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJv
b2wgdHJ5VG9EaXNhc3NlbWJsZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIHNpemVfdCBzaXplLCBG
SUxFKiBvdXQpOworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIEZJTEUqIG91dCk7CiAjZWxz
ZQotaW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIHNp
emVfdCwgRklMRSopCitpbmxpbmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29uc3QgY2hhciosIEZJTEUqKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURp
czg2RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEyMDc4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEyIEBACiAKICNpZiBVU0UoVURJUzg2KQog
CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAidWRpczg2Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1ib29sIHRyeVRvRGlzYXNzZW1ibGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHIsIHNpemVfdCBzaXplLCBGSUxFKiBvdXQpCitib29sIHRyeVRvRGlz
YXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6
ZSwgY29uc3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJs
ZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNzZW1ibGVyKTsKQEAgLTQ1LDEwICs0NiwxMiBAQCBib29s
IHRyeVRvRGlzYXNzZW1ibGUoTWFjcm9Bc3NlbWJsZXJDb2RlCiAgICAgdWRfc2V0X3BjKCZkaXNh
c3NlbWJsZXIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOwogICAgIHVkX3NldF9zeW50YXgoJmRpc2Fzc2VtYmxlciwgVURfU1lOX0FUVCk7CiAg
ICAgCisgICAgdWludDY0X3QgY3VycmVudFBDID0gZGlzYXNzZW1ibGVyLnBjOwogICAgIHdoaWxl
ICh1ZF9kaXNhc3NlbWJsZSgmZGlzYXNzZW1ibGVyKSkgewogICAgICAgICBjaGFyIHBjU3RyaW5n
WzIwXTsKLSAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmluZyksICIweCVs
eCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRpc2Fzc2VtYmxlci5wYykpOwotICAgICAg
ICBmcHJpbnRmKG91dCwgIiUxNnM6ICVzXG4iLCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fz
c2VtYmxlcikpOworICAgICAgICBzbnByaW50ZihwY1N0cmluZywgc2l6ZW9mKHBjU3RyaW5nKSwg
IjB4JWx4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oY3VycmVudFBDKSk7CisgICAgICAg
IGZwcmludGYob3V0LCAiJXMlMTZzOiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9h
c20oJmRpc2Fzc2VtYmxlcikpOworICAgICAgICBjdXJyZW50UEMgPSBkaXNhc3NlbWJsZXIucGM7
CiAgICAgfQogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNyArNzYxLDggQEAgSklUQ29kZSBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUgJiYgZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiAgICAgICAgICpm
dW5jdGlvbkVudHJ5QXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVj
ayk7CiAgICAgCi0gICAgQ29kZVJlZiByZXN1bHQgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUo
KTsKKyAgICBDb2RlUmVmIHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVm
ZmVyLCAoIkJhc2VsaW5lIEpJVCBjb2RlIGZvciBDb2RlQmxvY2sgJXAiLCBtX2NvZGVCbG9jaykp
OwogICAgIAogICAgIG1fZ2xvYmFsRGF0YS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29y
ZEZvckJhc2VsaW5lSklULmFkZCgKICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihyZXN1bHQu
c2l6ZSgpKSAvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24g
MTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NSw5ICsxNDUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3JlZi5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgdHJ5
VG9EaXNhc3NlbWJsZSgpIGNvbnN0CisgICAgICAgIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25z
dCBjaGFyKiBwcmVmaXgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBKU0M6
OnRyeVRvRGlzYXNzZW1ibGUobV9yZWYuY29kZSgpLCBzaXplKCksIFdURjo6ZGF0YUZpbGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9yZWYudHJ5VG9EaXNhc3NlbWJsZShwcmVmaXgpOwogICAg
ICAgICB9CiAKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZ2V0RXhlY3V0YWJsZU1l
bW9yeSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCShyZXZpc2lvbiAxMjA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBQYXNz
UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsQ2FsbE5vdEpTRnVuY3Rpb24sIEZ1bmN0aW9uUHRyKGN0aV9vcF9jYWxsX05vdEpTRnVu
Y3Rpb24pKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxDb25zdHJ1Y3ROb3RKU0Z1bmN0aW9u
LCBGdW5jdGlvblB0cihjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3RydWN0KSk7CiAKLSAgICBD
b2RlUmVmIGZpbmFsQ29kZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIENvZGVS
ZWYgZmluYWxDb2RlID0gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQgQ1RJIG1hY2hp
bmUgdHJhbXBvbGluZXMiKSk7CiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4
ZWN1dGFibGVNZW1vcnkgPSBmaW5hbENvZGUuZXhlY3V0YWJsZU1lbW9yeSgpOwogCiAgICAgdHJh
bXBvbGluZXMtPmN0aVZpcnR1YWxDYWxsTGluayA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdCh2
aXJ0dWFsQ2FsbExpbmtCZWdpbik7CkBAIC00OTcsNyArNDk3LDcgQEAgSklUOjpDb2RlUmVmIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1f
Z2xvYmFsRGF0YSwgdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKIAogICAgIHBhdGNoQnVmZmVyLmxp
bmsobmF0aXZlQ2FsbCwgRnVuY3Rpb25QdHIoZnVuYykpOwotICAgIHJldHVybiBwYXRjaEJ1ZmZl
ci5maW5hbGl6ZUNvZGUoKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJKSVQgQ1RJIG5hdGl2ZSBjYWxsIikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3
IEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjoKICAgICBwYXRjaEJ1
ZmZlci5saW5rKGNhbGxDYWxsTm90SlNGdW5jdGlvbiwgRnVuY3Rpb25QdHIoY3RpX29wX2NhbGxf
Tm90SlNGdW5jdGlvbikpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbENvbnN0cnVjdE5vdEpT
RnVuY3Rpb24sIEZ1bmN0aW9uUHRyKGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QpKTsK
IAotICAgIENvZGVSZWYgZmluYWxDb2RlID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cisg
ICAgQ29kZVJlZiBmaW5hbENvZGUgPSBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkpJVCBD
VEkgbWFjaGluZSB0cmFtcG9saW5lcyIpKTsKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhh
bmRsZT4gZXhlY3V0YWJsZU1lbW9yeSA9IGZpbmFsQ29kZS5leGVjdXRhYmxlTWVtb3J5KCk7CiAK
ICAgICB0cmFtcG9saW5lcy0+Y3RpVmlydHVhbENhbGxMaW5rID0gcGF0Y2hCdWZmZXIudHJhbXBv
bGluZUF0KHZpcnR1YWxDYWxsTGlua0JlZ2luKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTIw
NzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6
OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmUKICAgICBqaXQucmV0KCk7CiAgICAgCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAg
ICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3RyaW5nIGdldF9ieV92YWwgc3R1YiIpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNTQ1LDcgKzU0NSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJh
bnNpdGlvCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1swXS5mcm9tLCBGdW5jdGlv
blB0cihjdGlfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fcmVhbGxvYykpOwogICAgIH0KICAgICAK
LSAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsK
KyAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRj
aEJ1ZmZlciwKKyAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywg
cmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KG1fY29kZUJsb2NrKTsKICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvVHJhbXBvbGlu
ZShyZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby0+c3R1YlJvdXRpbmUu
Y29kZSgpKSk7CiB9CkBAIC02MTEsNyArNjE0LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVBhdGNoR2V0QXJyYXlMZW4KICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQucHV0UmVzdWx0KSk7CiAgICAgCiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVh
dGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgotICAgIHN0dWJJbmZvLT5zdHVi
Um91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIHN0dWJJbmZvLT5zdHVi
Um91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAo
IkJhc2VsaW5lIGdldF9ieV9pZCBhcnJheSBsZW5ndGggc3R1YiBmb3IgQ29kZUJsb2NrICVwLCBy
ZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxp
bmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAgLy8g
RmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGgg
dG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24g
PSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFz
ZWxpbmUudS5nZXQuc3RydWN0dXJlQ2hlY2spOwpAQCAtNjc3LDcgKzY4NCwxMSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgfQogCiAgICAgLy8gVHJhY2sg
dGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVy
LgotICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgp
OworICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBh
dGNoQnVmZmVyLAorICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBwcm90byBzdHViIGZvciBD
b2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
ICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGlu
IHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1w
IGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1Y3R1cmVDaGVjayk7CkBAIC03MzUsNyArNzQ2
LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICAvLyBP
biBzdWNjZXNzIHJldHVybiBiYWNrIHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBp
dCB3aWxsIHBlcmZvcm0gdGhlIHN0b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVy
Lmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpKTsKIAotICAgIENvZGVSZWYgc3R1
YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgc3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZl
ciwKKyAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgc2VsZiBsaXN0IHN0dWIgZm9yIENvZGVC
bG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAg
ICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2Jh
bERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YlJvdXRpbmUsIHN0cnVj
dHVyZSwgaXNEaXJlY3QpOwogICAgIApAQCAtODAwLDcgKzgxNSwxMSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgLy8gT24gc3VjY2VzcyByZXR1cm4gYmFj
ayB0byB0aGUgaG90IHBhdGNoIGNvZGUsIGF0IGEgcG9pbnQgaXQgd2lsbCBwZXJmb3JtIHRoZSBz
dG9yZSB0byBkZXN0IGZvciB1cy4KICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQucHV0UmVzdWx0KSk7CiAgICAgCi0gICAgQ29kZVJlZiBzdHViUm91dGluZSA9IHBhdGNo
QnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViUm91
dGluZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAoIkJh
c2VsaW5lIGdldF9ieV9pZCBwcm90byBsaXN0IHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJu
IHBvaW50ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2lu
LmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
Z2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgcHJvdG90eXBlU3Ry
dWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHViUm91dGluZSwgc3RydWN0dXJlLCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGlzRGlyZWN0KTsKICAgICAKQEAgLTg3MCw3ICs4ODksMTEgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAgIC8vIE9uIHN1Y2Nl
c3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBwYXRjaCBjb2RlLCBhdCBhIHBvaW50IGl0IHdpbGwg
cGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBmb3IgdXMuCiAgICAgcGF0Y2hCdWZmZXIubGluayhz
dWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkpOwogICAgIAotICAgIENvZGVSZWYgc3R1YlJv
dXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgc3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwK
KyAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgY2hhaW4gbGlzdCBzdHViIGZvciBDb2RlQmxv
Y2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAK
ICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJl
IGRlbGV0ZWQgbGF0ZXIuCiAgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5k
ZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBzdHViUm91dGluZSwgc3RydWN0dXJlLCBjaGFpbiwgaXNEaXJlY3QpOwpAQCAtOTM2
LDcgKzk1OSwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RyCiAg
ICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkpOwogICAg
IAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwg
YmUgZGVsZXRlZCBsYXRlci4KLSAgICBDb2RlUmVmIHN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHN0dWJSb3V0aW5lID0g
RklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICgiQmFzZWxpbmUg
Z2V0X2J5X2lkIGNoYWluIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwK
KyAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZz
ZXQoCisgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3Vs
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IHN0
dWJSb3V0aW5lOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBj
YXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDEyMDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6
OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmUKICAgICBqaXQucmV0KCk7CiAgICAgCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAg
ICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiU3RyaW5nIGdldF9ieV92YWwgc3R1YiIpKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNTY0LDcgKzU2NCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJh
bnNpdGlvCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1swXS5mcm9tLCBGdW5jdGlv
blB0cihjdGlfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fcmVhbGxvYykpOwogICAgIH0KICAgICAK
LSAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsK
KyAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRj
aEJ1ZmZlciwKKyAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBmb3IgQ29k
ZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVy
bkFkZHJlc3MudmFsdWUoKSkpOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihtX2Nv
ZGVCbG9jayk7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb1RyYW1wb2xpbmUocmV0
dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YkluZm8tPnN0dWJSb3V0aW5lLmNvZGUo
KSkpOwogfQpAQCAtNjI1LDcgKzYyOCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRj
aEdldEFycmF5TGVuCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90
UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1
dFJlc3VsdCkpOwogCiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRo
YXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgotICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9
IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9
IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAoIkJhc2xpbmUg
SklUIGdldF9ieV9pZCBhcnJheSBsZW5ndGggc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4g
cG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
bGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5n
ZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAvLyBGaW5hbGx5IHBh
dGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhl
cmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51Lmdl
dC5zdHJ1Y3R1cmVDaGVjayk7CkBAIC02ODgsNyArNjk1LDExIEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRQcm90byhTdHIKICAgICAgICAgfQogICAgIH0KICAgICAvLyBUcmFjayB0
aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIu
Ci0gICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7
CisgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0
Y2hCdWZmZXIsCisgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBwcm90byBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywg
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4g
dGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAg
anVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZUNoZWNrKTsKQEAgLTc0NSw3ICs3NTYs
MTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIC8vIE9u
IHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBwYXRjaCBjb2RlLCBhdCBhIHBvaW50IGl0
IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBmb3IgdXMuCiAgICAgcGF0Y2hCdWZmZXIu
bGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkpOwogCi0gICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHN0dWJDb2RlID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CisgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHN0dWJDb2RlID0gRklOQUxJWkVfQ09ERSgKKyAgICAgICAgcGF0
Y2hCdWZmZXIsCisgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBsaXN0IHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIG1fY29kZUJsb2NrLCBz
dHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogCiAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCpt
X2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkNvZGUsIHN0
cnVjdHVyZSwgaXNEaXJlY3QpOwogCkBAIC04MTEsNyArODI2LDExIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QKICAgICAvLyBPbiBzdWNjZXNzIHJldHVybiBiYWNr
IHRvIHRoZSBob3QgcGF0Y2ggY29kZSwgYXQgYSBwb2ludCBpdCB3aWxsIHBlcmZvcm0gdGhlIHN0
b3JlIHRvIGRlc3QgZm9yIHVzLgogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5wdXRSZXN1bHQpKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzdHViQ29kZSA9
IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBz
dHViQ29kZSA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAo
IkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAs
IHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNl
bGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICBwcm90b3R5
cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERhdGEsIG1fY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkNvZGUsIHN0cnVjdHVyZSwgcHJvdG90eXBl
U3RydWN0dXJlLCBpc0RpcmVjdCk7CiAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRv
IHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KQEAg
LTg4MCw3ICs4OTksMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dAogICAgIC8vIE9uIHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBwYXRjaCBjb2RlLCBh
dCBhIHBvaW50IGl0IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBmb3IgdXMuCiAgICAg
cGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRP
ZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkpOwogCi0gICAg
Q29kZVJlZiBzdHViUm91dGluZSA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworICAgIENv
ZGVSZWYgc3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFKAorICAgICAgICBwYXRjaEJ1ZmZlciwK
KyAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgQ29k
ZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICBzdHViSW5mby0+
cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAK
ICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJl
IGRlbGV0ZWQgbGF0ZXIuCiAgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5k
ZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBzdHViUm91dGluZSwgc3RydWN0dXJlLCBjaGFpbiwgaXNEaXJlY3QpOwpAQCAtOTQ3
LDcgKzk3MCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RyCiAg
ICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkpOwogCiAg
ICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBk
ZWxldGVkIGxhdGVyLgotICAgIENvZGVSZWYgc3R1YlJvdXRpbmUgPSBwYXRjaEJ1ZmZlci5maW5h
bGl6ZUNvZGUoKTsKKyAgICBDb2RlUmVmIHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERSgKKyAg
ICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFp
biBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICBtX2Nv
ZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAg
ICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBzdHViUm91dGluZTsKIAog
ICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhv
dCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDEyMDc4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsMTMgKzEzMiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZmluYWxpemUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
ZmFsbGJhY2spCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3Qg
Y2hhciogdGh1bmtLaW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGdsb2JhbERhdGEsIHRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKG1fZmFpbHVyZXMsIENvZGVMb2NhdGlvbkxhYmVsKGZhbGxiYWNrKSk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7IGkr
KykKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3QsIG1f
Y2FsbHNbaV0uc2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGUoKTsKKyAgICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IlNwZWNpYWxpemVkIHRodW5rIGZvciAlcyIsIHRodW5rS2luZCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gQXNzdW1lcyB0aGF0IHRoZSB0YXJnZXQgZnVuY3Rpb24gdXNlcyBmcFJlZ2lzdGVy
MCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDEyMDc4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuCiAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSwgZ2xvYmFsRGF0YSk7CiAgICAgc3RyaW5nQ2hhckxv
YWQoaml0KTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERh
dGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCksICJjaGFyQ29kZUF0Iik7
CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCkBAIC04Nyw3ICs4Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjaGFyQXRUaHVua0dlbmVyYXQKICAgICBzdHJpbmdDaGFyTG9hZChqaXQpOwogICAgIGNoYXJU
b1N0cmluZyhqaXQsIGdsb2JhbERhdGEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAg
IGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVy
biBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERh
dGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCksICJjaGFyQXQiKTsKIH0KIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKQEAgLTk3LDcgKzk3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZyb21DaGFy
Q29kZVRodW5rRwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgZ2xvYmFsRGF0YSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMSk7CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSwgImZy
b21DaGFyQ29kZSIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTEwOSw3ICsxMDksNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yCiAgICAgaml0LmxvYWREb3VibGVBcmd1
bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CiAgICAgaml0LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgaml0LnJldHVybkRvdWJsZShT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCpn
bG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpKTsKKyAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCgpLCAic3FydCIpOwogfQogCiAKQEAgLTIwOSw3ICsyMDksNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dlbmVyYXRvCiAgICAgaml0LnJldHVybkludDMyKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBkb3VibGVSZXN1bHQubGluaygmaml0KTsK
ICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAg
IHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCksICJmbG9vciIpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKQEAgLTIyOCw3ICsyMjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5r
R2VuZXJhdG9yCiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
KTsKICAgICBkb3VibGVSZXN1bHQubGluaygmaml0KTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmds
b2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJl
dHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKCksICJjZWlsIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTI2Miw3ICsyNjIsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvCiAgICAgaml0LnJldHVy
bkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBkb3VibGVSZXN1bHQubGlu
aygmaml0KTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVn
VDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2Jh
bERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCksICJyb3VuZCIpOwog
fQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQpAQCAtMjc1LDcgKzI3NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBl
eHBUaHVua0dlbmVyYXRvcigKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBq
aXQuY2FsbERvdWJsZVRvRG91YmxlKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpOwogICAgIGpp
dC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJu
IGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2
ZUNhbGwoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSwgImV4cCIpOwogfQogCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbG9nVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQpAQCAt
Mjg4LDcgKzI4OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcigK
ICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91
YmxlKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSk7CisgICAgcmV0
dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwoKSwgImxvZyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYWJzVGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQpAQCAtMzA4LDcgKzMwOCw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcigKICAgICBqaXQubG9hZERvdWJs
ZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuYWJzRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOwogICAgIGppdC5yZXR1cm5Eb3Vi
bGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6
ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSk7Cisg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMt
PmN0aU5hdGl2ZUNhbGwoKSwgImFicyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQpAQCAtMzYwLDcgKzM2MCw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVyYXRvcigKICAgICB9IGVsc2UK
ICAgICAgICAgaml0LmFwcGVuZEZhaWx1cmUobm9uSW50RXhwb25lbnQpOwogCi0gICAgcmV0dXJu
IGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2
ZUNhbGwoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSwgInBvdyIpOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDEyMDc4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CiAKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQorc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5rS2luZCkK
IHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAgICAgCkBAIC00NSwzNyArNDUsMzcgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIGppdC5qdW1wKEpTSW50
ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xv
YmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgi
TExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKIH0KIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sp
OworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJp
dHkgY2hlY2siKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsK
LSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIik7CiB9
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAi
cHJvZ3JhbSIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMjA3ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMgewog
CiBib29sIHVzZUpJVDsKIAorYm9vbCBzaG93RGlzYXNzZW1ibHk7CisKIHVuc2lnbmVkIG1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogCiB1bnNpZ25lZCBtYXhp
bXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKQEAgLTE2
Miw2ICsxNjQsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKIHsKICAgICBTRVQodXNlSklU
LCB0cnVlKTsKICAgICAKKyAgICBTRVQoc2hvd0Rpc2Fzc2VtYmx5LCBmYWxzZSk7CisgICAgCiAg
ICAgU0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAw
MCk7CiAgICAgCiAgICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50LCAxODApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkocmV2aXNpb24gMTIwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9ucyB7CiAKIGV4dGVybiBib29sIHVzZUpJVDsKIAorZXh0
ZXJuIGJvb2wgc2hvd0Rpc2Fzc2VtYmx5OworCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiAKIGV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiAxMjA3ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYxMSwxNCArMjYxMSwxNCBAQCBwdWJsaWM6CiAKICAgICAgICAgaWYgKGNvbXBpbGVNb2Rl
ID09IE1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhcjgpCi0g
ICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDhCaXRDb2RlTWF0Y2hPbmx5KGxpbmtCdWZmZXIu
ZmluYWxpemVDb2RlKCkpOworICAgICAgICAgICAgICAgIGppdE9iamVjdC5zZXQ4Qml0Q29kZU1h
dGNoT25seShGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiTWF0Y2gtb25seSA4LWJpdCByZWd1
bGFyIGV4cHJlc3Npb24iKSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGpp
dE9iamVjdC5zZXQxNkJpdENvZGVNYXRjaE9ubHkobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSk7
CisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsICgiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNzaW9u
IikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENo
YXI4KQotICAgICAgICAgICAgICAgIGppdE9iamVjdC5zZXQ4Qml0Q29kZShsaW5rQnVmZmVyLmZp
bmFsaXplQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0OEJpdENvZGUoRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZShs
aW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0
MTZCaXRDb2RlKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCIxNi1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIikpKTsKICAgICAgICAgfQogICAgICAgICBqaXRPYmplY3Quc2V0RmFsbEJhY2sobV9z
aG91bGRGYWxsQmFjayk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>