<?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>43207</bug_id>
          
          <creation_ts>2010-07-29 13:28:13 -0700</creation_ts>
          <short_desc>WeakGCPtr&apos;s need to be updated for movable objects</short_desc>
          <delta_ts>2010-08-06 16:42:40 -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>43269</dependson>
    
    <dependson>43626</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nathan Lawrence">nlawrence</reporter>
          <assigned_to name="Nathan Lawrence">nlawrence</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>257837</commentid>
    <comment_count>0</comment_count>
      <attachid>62980</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-29 13:28:13 -0700</bug_when>
    <thetext>Created attachment 62980
Patch

WeakGCPtr&apos;s should instead of directly pointing to the GC&apos;d object should be directed to an array of pointers that can be updated for movable objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257849</commentid>
    <comment_count>1</comment_count>
      <attachid>62986</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-29 13:49:26 -0700</bug_when>
    <thetext>Created attachment 62986
Patch

Fixed merge conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257855</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-29 13:51:46 -0700</bug_when>
    <thetext>Attachment 62986 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/BlockAllocator.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/wtf/BlockAllocator.cpp:71:  Use 0 instead of NULL.  [readability/null] [5]
JavaScriptCore/wtf/BlockAllocator.cpp:75:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/runtime/GCHandle.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
JavaScriptCore/runtime/GCHandle.h:83:  This { should be at the end of the previous line  [whitespace/braces] [4]
JavaScriptCore/wtf/wince/BlockAllocatorWinCE.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/wtf/wince/BlockAllocatorWinCE.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
JavaScriptCore/wtf/wince/BlockAllocatorWinCE.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
JavaScriptCore/wtf/wince/BlockAllocatorWinCE.cpp:44:  Use 0 instead of NULL.  [readability/null] [5]
JavaScriptCore/wtf/mac/BlockAllocatorMac.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/wtf/mac/BlockAllocatorMac.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
JavaScriptCore/runtime/Collector.cpp:919:  One line control clauses should not use braces.  [whitespace/braces] [4]
JavaScriptCore/runtime/WeakGCPtr.h:53:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
JavaScriptCore/runtime/WeakGCPtr.h:61:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
JavaScriptCore/runtime/GCHandle.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/runtime/GCHandle.cpp:57:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
JavaScriptCore/wtf/win/BlockAllocatorWin.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/wtf/win/BlockAllocatorWin.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
JavaScriptCore/wtf/win/BlockAllocatorWin.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 19 in 19 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>257866</commentid>
    <comment_count>3</comment_count>
      <attachid>62986</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-29 14:02:09 -0700</bug_when>
    <thetext>Comment on attachment 62986
Patch

The BlockAllocator stuff should be drop -- you should instead add the required APIs to the new PageAllocation class that gavin added a few days ago -- you may want to discuss details with him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260206</commentid>
    <comment_count>4</comment_count>
      <attachid>63491</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-04 14:15:31 -0700</bug_when>
    <thetext>Created attachment 63491
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260207</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 14:16:17 -0700</bug_when>
    <thetext>Attachment 63491 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/GCHandle.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
JavaScriptCore/runtime/GCHandle.h:89:  This { should be at the end of the previous line  [whitespace/braces] [4]
JavaScriptCore/runtime/WeakGCPtr.h:53:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
JavaScriptCore/runtime/WeakGCPtr.h:61:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
JavaScriptCore/runtime/GCHandle.cpp:56:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 5 in 12 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>260217</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-04 14:30:19 -0700</bug_when>
    <thetext>Attachment 63491 did not build on qt:
Build output: http://queues.webkit.org/results/3645322</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260224</commentid>
    <comment_count>7</comment_count>
      <attachid>63495</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-04 14:53:23 -0700</bug_when>
    <thetext>Created attachment 63495
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260265</commentid>
    <comment_count>8</comment_count>
      <attachid>63509</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-04 16:22:55 -0700</bug_when>
    <thetext>Created attachment 63509
patch

The previous build errors may be related to the lack of forwarding headers in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260268</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 16:25:37 -0700</bug_when>
    <thetext>Attachment 63509 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Total errors found: 0 in 0 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>260851</commentid>
    <comment_count>10</comment_count>
      <attachid>63635</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-05 14:21:41 -0700</bug_when>
    <thetext>Created attachment 63635
patch (with patch!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260888</commentid>
    <comment_count>11</comment_count>
      <attachid>63635</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-08-05 14:59:50 -0700</bug_when>
    <thetext>Comment on attachment 63635
patch (with patch!)

JavaScriptCore/runtime/Collector.cpp:938
 +      m_weakGCHandlePools.append(allocation);
I think it would be better to use a smaller block allocator for WeakGCHandles, since there are usually so few of them. Maybe 32K instead of 256K?

JavaScriptCore/runtime/GCHandle.h:66
 +      }
The canonical names for these accessors in smart pointers are &quot;get&quot; and &quot;set&quot;.

JavaScriptCore/runtime/GCHandle.h:78
 +      }
I would call these &quot;nextInFreeList&quot; and &quot;setNextInFreeList&quot;.

JavaScriptCore/runtime/GCHandle.cpp:74
 +      return 0;
You can turn the &quot;if&quot; above into the ASSERT, and remove the ASSERT_NOT_REACHED and bogus return at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260896</commentid>
    <comment_count>12</comment_count>
      <attachid>63644</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-05 15:20:33 -0700</bug_when>
    <thetext>Created attachment 63644
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260903</commentid>
    <comment_count>13</comment_count>
      <attachid>63646</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-05 15:31:04 -0700</bug_when>
    <thetext>Created attachment 63646
patch

This should also limit the amount of memory allocated for the weakgchandlepools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260936</commentid>
    <comment_count>14</comment_count>
      <attachid>63646</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-08-05 16:15:05 -0700</bug_when>
    <thetext>Comment on attachment 63646
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261256</commentid>
    <comment_count>15</comment_count>
      <attachid>63646</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-06 07:56:26 -0700</bug_when>
    <thetext>Comment on attachment 63646
patch

Clearing flags on attachment: 63646

Committed r64849: &lt;http://trac.webkit.org/changeset/64849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261257</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-06 07:56:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261310</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-06 09:47:54 -0700</bug_when>
    <thetext>This patch appears to break compile on Windows.  Rolling out to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261571</commentid>
    <comment_count>18</comment_count>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-08-06 16:42:40 -0700</bug_when>
    <thetext>Rollout was canceled.  Thank you windows build fixer!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62980</attachid>
            <date>2010-07-29 13:28:13 -0700</date>
            <delta_ts>2010-07-29 13:49:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>41655</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0Mjg2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODIgQEAKKzIwMTAtMDctMjkgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IFdlYWtHQ1B0ciBpcyBub3cgaW5kaXJlY3QgdG8g
YWxsb3cgdmFsdWVzIHRvIGJlIHVwZGF0ZWQgd2hlbgorICAgICAgICBvYmplY3RzIGFyZSBtb3Zl
ZC4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRvIHN1cHBvcnQgdGhlIGFsbG9jYXRpb24gb2Yg
YWxpZ25lZCBtZW1vcnksIEkgbW92ZWQKKyAgICAgICAgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNv
ZGUgZnJvbSBhbGxvY2F0ZUJsb2NrKCkgYW5kIGZyZWVCbG9ja1B0cigpCisgICAgICAgIGluIEhl
YXAgdG8gYW4gQWxpZ25lZEJsb2NrQWxsb2NhdG9yIGNsYXNzIHRoYXQgbWF0Y2hlZCB0aGUgZXhp
c3RpbmcKKyAgICAgICAgb25lIGZvciBTeW1iaWFuLgorCisgICAgICAgICogQW5kcm9pZC5tazoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
aToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcm86CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZXN0cm95KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgIChK
U0M6OkhlYXA6OmZyZWVCbG9jayk6CisgICAgICAgIChKU0M6OkhlYXA6OmZyZWVCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDSGFuZGxlUG9vbDo6dXBkYXRlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkV2Vha0dD
SGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBydW50
aW1lL0NvbGxlY3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwb29sKToKKyAgICAgICAgKEpTQzo6V2Vha0dD
SGFuZGxlUG9vbDo6V2Vha0dDSGFuZGxlUG9vbCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRs
ZVBvb2w6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6ZnJlZSk6
CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyk6CisgICAgICAg
ICogcnVudGltZS9HQ0hhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxl
Ojppc1ZhbGlkUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1B0cik6CisgICAg
ICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6aXNOZXh0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFu
ZGxlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwdHIpOgorICAg
ICAgICAoSlNDOjpXZWFrR0NIYW5kbGU6Om5leHQpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5k
bGVQb29sOjppc0Z1bGwpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDUHRyLmg6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp+
V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp1bmNoZWNrZWRHZXQpOgorICAg
ICAgICAoSlNDOjpXZWFrR0NQdHI6OmdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6Y2xl
YXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OmFzc2lnbik6CisgICAgICAgIChKU0M6Ojo6
b3BlcmF0b3IpOgorICAgICAgICAqIHd0Zi9CbG9ja0FsbG9jYXRvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OkFsaWduZWRCbG9ja0FsbG9jYXRvcik6
CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFsaWduZWRCbG9ja0FsbG9j
YXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVzdHJveSk6Cisg
ICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MpOgorICAgICAgICAoV1RG
OjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUpOgorICAgICAgICAqIHd0Zi9CbG9ja0FsbG9j
YXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
bWFjL0Jsb2NrQWxsb2NhdG9yTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkFsaWduZWRC
bG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6QWxp
Z25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdU
Rjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKFdURjo6QWxpZ25l
ZEJsb2NrQWxsb2NhdG9yOjphbGxvYyk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9j
YXRvcjo6ZnJlZSk6CisgICAgICAgICogd3RmL3dpbi9CbG9ja0FsbG9jYXRvcldpbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OkFsaWduZWRCbG9ja0Fs
bG9jYXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFsaWduZWRC
bG9ja0FsbG9jYXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MpOgorICAg
ICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUpOgorICAgICAgICAqIHd0Zi93
aW5jZS9CbG9ja0FsbG9jYXRvcldpbkNFLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkFsaWdu
ZWRCbG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6
QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAg
KFdURjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKFdURjo6QWxp
Z25lZEJsb2NrQWxsb2NhdG9yOjphbGxvYyk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0Fs
bG9jYXRvcjo6ZnJlZSk6CisKIDIwMTAtMDctMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogSmF2
YVNjcmlwdENvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BbmRy
b2lkLm1rCShyZXZpc2lvbiA2NDI4MCkKKysrIEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHdv
cmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAlydW50
aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwK
IAlydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCisJcnVudGltZS9HQ0hhbmRsZS5jcHAg
XAogCXJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAJcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uY3BwIFwKIAlydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKQEAgLTE1NCw2ICsxNTUsNyBAQCBM
T0NBTF9TUkNfRklMRVMgOj0gXAogCXJ1bnRpbWUvVVN0cmluZy5jcHAgXAogCVwKIAl3dGYvQXNz
ZXJ0aW9ucy5jcHAgXAorCXd0Zi9CbG9ja0FsbG9jYXRvci5jcHAgXAogCXd0Zi9CeXRlQXJyYXku
Y3BwIFwKIAl3dGYvQ3VycmVudFRpbWUuY3BwIFwKIAl3dGYvRGF0ZU1hdGguY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2NDI4MCkKKysrIEphdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0V4ZWN1dGFibGUuY3BwCiAgICAgcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCisgICAgcnVudGltZS9HQ0hhbmRsZS5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5j
cHAKICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lkZW50
aWZpZXIuY3BwCkBAIC0xNjcsNiArMTY4LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICB5YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwCiAgICAgeWFyci9SZWdleEpJVC5jcHAKIAor
ICAgIHd0Zi9CbG9ja0FsbG9jYXRvci5jcHAKICAgICB3dGYvRGF0ZU1hdGguY3BwCiAgICAgd3Rm
L1BhZ2VBbGxvY2F0aW9uLmNwcAogKQpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDY0MjgwKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2NSw2ICsyNjUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5j
cHAgXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaCBcCiAJSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlv
bi5jcHAgXApAQCAtNDA5LDYgKzQxMSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9B
dG9taWNzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9BVkxUcmVlLmggXAorCUphdmFTY3JpcHRD
b3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0Fs
bG9jYXRvci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL0J5dGVBcnJheS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJl
YWRSZWZDb3VudGVkLmggXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNp
b24gNjQyODApCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MjRnZXRPd25Q
cm9wZXJ0eURlCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pT
QzEyU3RyaW5nT2JqZWN0NGluZm9FCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVj
U3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdVU3Ry
aW5nRQorX19aTjNKU0MxMldlYWtHQ0hhbmRsZTRwb29sRXYKIF9fWk4zSlNDMTJqc051bWJlckNl
bGxFUE5TXzlFeGVjU3RhdGVFZAogX19aTjNKU0MxMm5vbklubGluZU5hTkV2CiBfX1pOM0pTQzEz
U2FtcGxpbmdGbGFnczRzdG9wRXYKQEAgLTE3MSw2ICsxNzIsNyBAQCBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbkMyRVBOU18xMkpTR2xvCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVs
ZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2
SlNWYXJpYWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4
UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blBy
b3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVF
bnVtZXJhdGlvbk1vZGVFCitfX1pOM0pTQzE2V2Vha0dDSGFuZGxlUG9vbDRmcmVlRVBOU18xMldl
YWtHQ0hhbmRsZUUKIF9fWk4zSlNDMTZjcmVhdGVSYW5nZUVycm9yRVBOU185RXhlY1N0YXRlRVJL
TlNfN1VTdHJpbmdFCiBfX1pOM0pTQzE2dGhyb3dTeW50YXhFcnJvckVQTlNfOUV4ZWNTdGF0ZUUK
IF9fWk4zSlNDMTZ0b1VJbnQzMlNsb3dDYXNlRWRSYgpAQCAtMjAxLDYgKzIwMyw3IEBAIF9fWk4z
SlNDMjVldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lRVJLTlMKIF9fWk4zSlNDMzVjcmVhdGVJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzNO
YU5FCiBfX1pOM0pTQzRIZWFwMTRwcmltYXJ5SGVhcEVuZEV2CitfX1pOM0pTQzRIZWFwMTVhZGRX
ZWFrR0NIYW5kbGVFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzRIZWFwMTVyZWNvcmRFeHRyYUNvc3RF
bQogX19aTjNKU0M0SGVhcDE2b2JqZWN0VHlwZUNvdW50c0V2CiBfX1pOM0pTQzRIZWFwMTZwcmlt
YXJ5SGVhcEJlZ2luRXYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNp
b24gNjQyODApCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTQsNiArMjE0LDggQEAKICAgICAgICAgICAgICdydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAncnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAnLAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCcsCisgICAgICAg
ICAgICAncnVudGltZS9HQ0hhbmRsZS5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NIYW5k
bGUuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwJywKICAgICAgICAg
ICAgICdydW50aW1lL0dldHRlclNldHRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL0dsb2Jh
bEV2YWxGdW5jdGlvbi5jcHAnLApAQCAtMzQ4LDYgKzM1MCw4IEBACiAgICAgICAgICAgICAnd3Rm
L0Fzc2VydGlvbnMuaCcsCiAgICAgICAgICAgICAnd3RmL0F0b21pY3MuaCcsCiAgICAgICAgICAg
ICAnd3RmL0FWTFRyZWUuaCcsCisgICAgICAgICAgICAnd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcCcs
CisgICAgICAgICAgICAnd3RmL0Jsb2NrQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9C
eXRlQXJyYXkuY3BwJywKICAgICAgICAgICAgICd3dGYvQnl0ZUFycmF5LmgnLAogICAgICAgICAg
ICAgJ3d0Zi9jaHJvbWl1bS9DaHJvbWl1bVRocmVhZGluZy5oJywKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDY0MjgwKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAorICAg
IHJ1bnRpbWUvR0NIYW5kbGUuY3BwIFwKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAgXAog
ICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlm
aWVyLmNwcCBcCkBAIC0yMDEsNiArMjAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9U
aW1lb3V0Q2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHd0Zi9B
c3NlcnRpb25zLmNwcCBcCisgICAgd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAgICAgd3RmL0J5
dGVBcnJheS5jcHAgXAogICAgIHd0Zi9DdXJyZW50VGltZS5jcHAgXAogICAgIHd0Zi9EYXRlTWF0
aC5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDI4MCkKKysrIEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTUwOCw2ICs1MDgsMTAgQEAKIAkJQkNGRDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8q
IEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLzsgfTsKIAkJ
QkNGRDhDOTMwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8q
IEp1bXBUYWJsZS5oICovOyB9OwogCQlDMEEyNzI2MzBFNTBBMDYzMDBFOTZFMTUgLyogTm90Rm91
bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQTI3
MjNGMEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUREMTJGQ0Y4MTFGRUIxQ0QwMEQ1NkE0NyAvKiBC
bG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREQxMkZDRjYxMUZFQjFDRDAwRDU2QTQ3IC8qIEJsb2NrQWxsb2NhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREQ2QzNCNUExMjAx
RTIxQjAwRDExRDA5IC8qIEJsb2NrQWxsb2NhdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERENkMzQjU5MTIwMUUyMUIwMEQxMUQwOSAvKiBC
bG9ja0FsbG9jYXRvck1hYy5jcHAgKi87IH07CisJCUREOUY5MUYwMTFGRUJBMDUwMEM0OTU0NSAv
KiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDlGOTFFRTExRkVCQTA1MDBDNDk1NDUgLyogR0NIYW5kbGUuY3BwICovOyB9OworCQlE
RDlGOTFGMTExRkVCQTA1MDBDNDk1NDUgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREOUY5MUVGMTFGRUJBMDUwMEM0OTU0NSAvKiBH
Q0hhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAw
MzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpT
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJ
CUUxNzg2MzZEMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVF
QzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLzsgfTsKQEAgLTEwNDksNiAr
MTA1MywxMCBAQAogCQlDMEEyNzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90Rm91bmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVyc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVE
NzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREQxMkZD
RjYxMUZFQjFDRDAwRDU2QTQ3IC8qIEJsb2NrQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJsb2NrQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCURENkMzQjU5MTIwMUUyMUIwMEQxMUQwOSAvKiBCbG9ja0FsbG9jYXRvck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja0FsbG9jYXRvck1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUREOUY5MUVFMTFGRUJBMDUwMEM0OTU0
NSAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
Q0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUREOUY5MUVGMTFGRUJB
MDUwMEM0OTU0NSAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3
OThEMDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0
QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNjcsNiArMTE3NSw3IEBACiAJCTA2RDM1
OEEwMERBQUQ5QzQwMDNCMTc0RSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCURENkMzQjU5MTIwMUUyMUIwMEQxMUQwOSAvKiBCbG9ja0FsbG9j
YXRvck1hYy5jcHAgKi8sCiAJCQkJMDZEMzU4QTEwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJl
YWRNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTE0MDYsNiArMTQxNSw3IEBA
CiAJCQkJNjVFMjE3QjcwOEU3RUVDQzAwMjNFNUY2IC8qIEFzc2VydGlvbnMuaCAqLywKIAkJCQlC
QzVGN0JCQjExODIzQjU5MDA1MkMwMkMgLyogQXRvbWljcy5oICovLAogCQkJCUUxQTU5NjM3MERF
M0UxQzMwMEMxN0UzNyAvKiBBVkxUcmVlLmggKi8sCisJCQkJREQxMkZDRjYxMUZFQjFDRDAwRDU2
QTQ3IC8qIEJsb2NrQWxsb2NhdG9yLmggKi8sCiAJCQkJODY2NzZENEQxMUZFRDU1RDAwNEI2ODYz
IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmggKi8sCiAJCQkJQTdBMUY3QUEwRjI1MkIzQzAwRTE4
NEUyIC8qIEJ5dGVBcnJheS5jcHAgKi8sCiAJCQkJQTdBMUY3QUIwRjI1MkIzQzAwRTE4NEUyIC8q
IEJ5dGVBcnJheS5oICovLApAQCAtMTU1NSw2ICsxNTY1LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFF
QzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUREOUY5MUVFMTFGRUJBMDUwMEM0OTU0NSAvKiBHQ0hhbmRsZS5jcHAgKi8s
CisJCQkJREQ5RjkxRUYxMUZFQkEwNTAwQzQ5NTQ1IC8qIEdDSGFuZGxlLmggKi8sCiAJCQkJQkNG
NjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZC
NkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yMTkzLDYgKzIyMDUsOCBAQAogCQkJCTg2OEJG
QTE4MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RDA4RDU0MTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlERDEyRkNGODExRkVCMUNEMDBENTZBNDcgLyogQmxvY2tBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCUREOUY5MUYxMTFGRUJBMDUwMEM0OTU0NSAvKiBHQ0hhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNjMzLDYgKzI2NDcsOCBAQAogCQkJCTg2OEJGQTE3MTE3Q0Yx
OTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMDhENTMx
MTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODYyN0U1RUIxMUYxMjgxOTAwQTMxM0I1IC8qIFBhZ2VBbGxvY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUREOUY5MUYwMTFGRUJBMDUwMEM0OTU0NSAvKiBHQ0hhbmRsZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlERDZDM0I1QTEyMDFFMjFCMDBEMTFEMDkgLyogQmxvY2tBbGxvY2F0b3JN
YWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3Iu
Y3BwCShyZXZpc2lvbiA2NDI4MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbGxlY3RvckhlYXBJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTEz
Nyw3ICsxMzgsMTAgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAjZW5k
aWYKICNpZiBPUyhTWU1CSUFOKQogICAgICwgbV9ibG9ja2FsbG9jYXRvcihKU0NDT0xMRUNUT1Jf
VklSVFVBTE1FTV9SRVNFUlZBVElPTiwgQkxPQ0tfU0laRSkKKyNlbHNlCisgICAgLCBtX2Jsb2Nr
YWxsb2NhdG9yKEJMT0NLX1NJWkUpCiAjZW5kaWYKKyAgICAsIG1faGFuZGxlUG9vbEFsbG9jYXRv
cihXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZSkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxE
YXRhKQogewogICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKQEAgLTE4Myw1OSArMTg3LDE2IEBAIHZv
aWQgSGVhcDo6ZGVzdHJveSgpCiAgICAgICAgIHQgPSBuZXh0OwogICAgIH0KICNlbmRpZgotI2lm
IE9TKFNZTUJJQU4pCiAgICAgbV9ibG9ja2FsbG9jYXRvci5kZXN0cm95KCk7Ci0jZW5kaWYKKyAg
ICBtX2hhbmRsZVBvb2xBbGxvY2F0b3IuZGVzdHJveSgpOwogICAgIG1fZ2xvYmFsRGF0YSA9IDA7
CiB9CiAKIE5FVkVSX0lOTElORSBDb2xsZWN0b3JCbG9jayogSGVhcDo6YWxsb2NhdGVCbG9jaygp
CiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIHZtX2FkZHJlc3NfdCBhZGRyZXNzID0gMDsKLSAgICB2
bV9tYXAoY3VycmVudF90YXNrKCksICZhZGRyZXNzLCBCTE9DS19TSVpFLCBCTE9DS19PRkZTRVRf
TUFTSywgVk1fRkxBR1NfQU5ZV0hFUkUgfCBWTV9UQUdfRk9SX0NPTExFQ1RPUl9NRU1PUlksIE1F
TU9SWV9PQkpFQ1RfTlVMTCwgMCwgRkFMU0UsIFZNX1BST1RfREVGQVVMVCwgVk1fUFJPVF9ERUZB
VUxULCBWTV9JTkhFUklUX0RFRkFVTFQpOwotI2VsaWYgT1MoU1lNQklBTikKICAgICB2b2lkKiBh
ZGRyZXNzID0gbV9ibG9ja2FsbG9jYXRvci5hbGxvYygpOyAgCiAgICAgaWYgKCFhZGRyZXNzKQog
ICAgICAgICBDUkFTSCgpOwotI2VsaWYgT1MoV0lOQ0UpCi0gICAgdm9pZCogYWRkcmVzcyA9IFZp
cnR1YWxBbGxvYyhOVUxMLCBCTE9DS19TSVpFLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBB
R0VfUkVBRFdSSVRFKTsKLSNlbGlmIE9TKFdJTkRPV1MpCi0jaWYgQ09NUElMRVIoTUlOR1cpICYm
ICFDT01QSUxFUihNSU5HVzY0KQotICAgIHZvaWQqIGFkZHJlc3MgPSBfX21pbmd3X2FsaWduZWRf
bWFsbG9jKEJMT0NLX1NJWkUsIEJMT0NLX1NJWkUpOwotI2Vsc2UKLSAgICB2b2lkKiBhZGRyZXNz
ID0gX2FsaWduZWRfbWFsbG9jKEJMT0NLX1NJWkUsIEJMT0NLX1NJWkUpOwotI2VuZGlmCi0gICAg
bWVtc2V0KGFkZHJlc3MsIDAsIEJMT0NLX1NJWkUpOwotI2VsaWYgSEFWRShQT1NJWF9NRU1BTElH
TikKLSAgICB2b2lkKiBhZGRyZXNzOwotICAgIHBvc2l4X21lbWFsaWduKCZhZGRyZXNzLCBCTE9D
S19TSVpFLCBCTE9DS19TSVpFKTsKLSNlbHNlCi0KLSNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCi0jZXJyb3IgTmVlZCB0byBpbml0aWFsaXplIHBhZ2VzaXplIHNhZmVseS4KLSNlbmRp
ZgotICAgIHN0YXRpYyBzaXplX3QgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOwotCi0gICAgc2l6
ZV90IGV4dHJhID0gMDsKLSAgICBpZiAoQkxPQ0tfU0laRSA+IHBhZ2VzaXplKQotICAgICAgICBl
eHRyYSA9IEJMT0NLX1NJWkUgLSBwYWdlc2l6ZTsKLQotICAgIHZvaWQqIG1tYXBSZXN1bHQgPSBt
bWFwKE5VTEwsIEJMT0NLX1NJWkUgKyBleHRyYSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQ
X1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwotICAgIHVpbnRwdHJfdCBhZGRyZXNzID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1tYXBSZXN1bHQpOwotCi0gICAgc2l6ZV90IGFkanVz
dCA9IDA7Ci0gICAgaWYgKChhZGRyZXNzICYgQkxPQ0tfT0ZGU0VUX01BU0spICE9IDApCi0gICAg
ICAgIGFkanVzdCA9IEJMT0NLX1NJWkUgLSAoYWRkcmVzcyAmIEJMT0NLX09GRlNFVF9NQVNLKTsK
LQotICAgIGlmIChhZGp1c3QgPiAwKQotICAgICAgICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oYWRkcmVzcyksIGFkanVzdCk7Ci0KLSAgICBpZiAoYWRqdXN0IDwgZXh0cmEpCi0gICAg
ICAgIG11bm1hcChyZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzICsgYWRqdXN0ICsgQkxP
Q0tfU0laRSksIGV4dHJhIC0gYWRqdXN0KTsKLQotICAgIGFkZHJlc3MgKz0gYWRqdXN0OwotI2Vu
ZGlmCiAKICAgICAvLyBJbml0aWFsaXplIGJsb2NrLgogCkBAIC0yNzEsNyArMjMyLDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSGVhcDo6ZnJlZUJsb2NrKHNpemVfdAogICAgIE9iamVjdEl0ZXJhdG9y
IGVuZChtX2hlYXAsIGJsb2NrICsgMSk7CiAgICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgICgqaXQpLT5+SlNDZWxsKCk7Ci0gICAgZnJlZUJsb2NrUHRyKG1faGVhcC5ibG9ja3Nb
YmxvY2tdKTsKKyAgICBtX2Jsb2NrYWxsb2NhdG9yLmZyZWUobV9oZWFwLmJsb2Nrc1tibG9ja10p
OwogCiAgICAgLy8gc3dhcCB3aXRoIHRoZSBsYXN0IGJsb2NrIHNvIHdlIGNvbXBhY3QgYXMgd2Ug
Z28KICAgICBtX2hlYXAuYmxvY2tzW2Jsb2NrXSA9IG1faGVhcC5ibG9ja3NbbV9oZWFwLnVzZWRC
bG9ja3MgLSAxXTsKQEAgLTI4MywyNyArMjQ0LDYgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6
ZnJlZUJsb2NrKHNpemVfdAogICAgIH0KIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6ZnJl
ZUJsb2NrUHRyKENvbGxlY3RvckJsb2NrKiBibG9jaykKLXsKLSNpZiBPUyhEQVJXSU4pICAgIAot
ICAgIHZtX2RlYWxsb2NhdGUoY3VycmVudF90YXNrKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PihibG9jayksIEJMT0NLX1NJWkUpOwotI2VsaWYgT1MoU1lNQklBTikKLSAgICBtX2Js
b2NrYWxsb2NhdG9yLmZyZWUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYmxvY2spKTsKLSNlbGlm
IE9TKFdJTkNFKQotICAgIFZpcnR1YWxGcmVlKGJsb2NrLCAwLCBNRU1fUkVMRUFTRSk7Ci0jZWxp
ZiBPUyhXSU5ET1dTKQotI2lmIENPTVBJTEVSKE1JTkdXKSAmJiAhQ09NUElMRVIoTUlOR1c2NCkK
LSAgICBfX21pbmd3X2FsaWduZWRfZnJlZShibG9jayk7Ci0jZWxzZQotICAgIF9hbGlnbmVkX2Zy
ZWUoYmxvY2spOwotI2VuZGlmCi0jZWxpZiBIQVZFKFBPU0lYX01FTUFMSUdOKQotICAgIGZyZWUo
YmxvY2spOwotI2Vsc2UKLSAgICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2sp
LCBCTE9DS19TSVpFKTsKLSNlbmRpZgotfQotCiB2b2lkIEhlYXA6OmZyZWVCbG9ja3MoKQogewog
ICAgIFByb3RlY3RDb3VudFNldCBwcm90ZWN0ZWRWYWx1ZXNDb3B5ID0gbV9wcm90ZWN0ZWRWYWx1
ZXM7CkBAIC0zMjcsNyArMjY3LDcgQEAgdm9pZCBIZWFwOjpmcmVlQmxvY2tzKCkKICAgICAgICAg
aXQtPmZpcnN0LT5+SlNDZWxsKCk7CiAKICAgICBmb3IgKHNpemVfdCBibG9jayA9IDA7IGJsb2Nr
IDwgbV9oZWFwLnVzZWRCbG9ja3M7ICsrYmxvY2spCi0gICAgICAgIGZyZWVCbG9ja1B0cihtX2hl
YXAuYmxvY2tzW2Jsb2NrXSk7CisgICAgICAgIG1fYmxvY2thbGxvY2F0b3IuZnJlZShtX2hlYXAu
YmxvY2tzW2Jsb2NrXSk7CiAKICAgICBmYXN0RnJlZShtX2hlYXAuYmxvY2tzKTsKIApAQCAtOTcy
LDYgKzkxMiwzNSBAQCB2b2lkIEhlYXA6Om1hcmtTdGFja09iamVjdHNDb25zZXJ2YXRpdmVsCiAj
ZW5kaWYKIH0KIAordm9pZCBIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkgewor
ICAgICAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzW2ldLT51cGRhdGUoKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2Vha0dDSGFuZGxlUG9vbDo6dXBkYXRlKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXM7ICsraSkgeworICAgICAgICBp
ZiAobV9lbnRyaWVzW2ldLmlzVmFsaWRQdHIoKSkgeworICAgICAgICAgICAgSlNDZWxsKiBjZWxs
ID0gbV9lbnRyaWVzW2ldLnB0cigpOworICAgICAgICAgICAgaWYgKCFjZWxsIHx8ICFIZWFwOjpp
c0NlbGxNYXJrZWQoY2VsbCkpCisgICAgICAgICAgICAgICAgbV9lbnRyaWVzW2ldLmludmFsaWRh
dGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworV2Vha0dDSGFuZGxlKiBIZWFwOjphZGRXZWFr
R0NIYW5kbGUoSlNDZWxsKiBwdHIpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
d2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGlmICghbV93ZWFrR0NIYW5k
bGVQb29sc1tpXS0+aXNGdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbV93ZWFrR0NIYW5kbGVQ
b29sc1tpXS0+YWxsb2NhdGUocHRyKTsKKworCisgICAgbV93ZWFrR0NIYW5kbGVQb29scy5hcHBl
bmQobmV3IChtX2hhbmRsZVBvb2xBbGxvY2F0b3IpIFdlYWtHQ0hhbmRsZVBvb2wpOworICAgIHJl
dHVybiBtX3dlYWtHQ0hhbmRsZVBvb2xzLmxhc3QoKS0+YWxsb2NhdGUocHRyKTsKK30KKwogdm9p
ZCBIZWFwOjpwcm90ZWN0KEpTVmFsdWUgaykKIHsKICAgICBBU1NFUlQoayk7CkBAIC0xMTA4LDYg
KzEwNzcsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgbWFya1N0YWNrLmRyYWluKCk7
CiAgICAgbWFya1N0YWNrLmNvbXBhY3QoKTsKIAorICAgIHVwZGF0ZVdlYWtHQ0hhbmRsZXMoKTsK
KwogICAgIG1faGVhcC5vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CiB9CiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjQyODApCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw4IEBACiAKICNpZiBPUyhTWU1CSUFOKQogI2luY2x1ZGUgPHd0Zi9zeW1iaWFuL0Jsb2NrQWxs
b2NhdG9yU3ltYmlhbi5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3dGYvQmxvY2tBbGxvY2F0b3IuaD4K
ICNlbmRpZgogCiAjZGVmaW5lIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoY2xhc3MpIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihjbGFzcykgPD0gQ0VMTF9TSVpFLCBjbGFzc19maXRzX2luX2NlbGwp
CkBAIC01MCw2ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTVmFsdWU7CiAg
ICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgTWFya1N0YWNrOworICAg
IGNsYXNzIFdlYWtHQ0hhbmRsZTsKKyAgICBjbGFzcyBXZWFrR0NIYW5kbGVQb29sOwogCiAgICAg
ZW51bSBPcGVyYXRpb25JblByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIENvbGxl
Y3Rpb24gfTsKIApAQCAtMTE1LDYgKzExOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgYm9vbCBpc0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIG1hcmtDZWxsKEpTQ2VsbCopOwogCisgICAgICAgIFdlYWtHQ0hhbmRsZSogYWRkV2Vha0dD
SGFuZGxlKEpTQ2VsbCopOworCiAgICAgICAgIHZvaWQgbWFya0NvbnNlcnZhdGl2ZWx5KE1hcmtT
dGFjayYsIHZvaWQqIHN0YXJ0LCB2b2lkKiBlbmQpOwogCiAgICAgICAgIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgbWFya0xpc3RTZXQoKSB7IGlmICghbV9tYXJrTGlzdFNldCkgbV9t
YXJrTGlzdFNldCA9IG5ldyBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj47IHJldHVybiAq
bV9tYXJrTGlzdFNldDsgfQpAQCAtMTM3LDcgKzE0Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE5FVkVSX0lOTElORSBDb2xsZWN0b3JCbG9jayogYWxsb2NhdGVCbG9jaygpOwogICAg
ICAgICBORVZFUl9JTkxJTkUgdm9pZCBmcmVlQmxvY2soc2l6ZV90KTsKLSAgICAgICAgTkVWRVJf
SU5MSU5FIHZvaWQgZnJlZUJsb2NrUHRyKENvbGxlY3RvckJsb2NrKik7CiAgICAgICAgIHZvaWQg
ZnJlZUJsb2NrcygpOwogICAgICAgICB2b2lkIHJlc2l6ZUJsb2NrcygpOwogICAgICAgICB2b2lk
IGdyb3dCbG9ja3Moc2l6ZV90IG5lZWRlZEJsb2Nrcyk7CkBAIC0xNTYsMTIgKzE2MSwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrQ3VycmVudFRocmVhZENvbnNlcnZhdGl2
ZWx5SW50ZXJuYWwoTWFya1N0YWNrJik7CiAgICAgICAgIHZvaWQgbWFya090aGVyVGhyZWFkQ29u
c2VydmF0aXZlbHkoTWFya1N0YWNrJiwgVGhyZWFkKik7CiAgICAgICAgIHZvaWQgbWFya1N0YWNr
T2JqZWN0c0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYpOworICAgICAgICB2b2lkIHVwZGF0ZVdl
YWtHQ0hhbmRsZXMoKTsKIAogICAgICAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+
IFByb3RlY3RDb3VudFNldDsKIAogICAgICAgICBDb2xsZWN0b3JIZWFwIG1faGVhcDsKIAogICAg
ICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CisgICAgICAgIFdURjo6VmVj
dG9yPFdlYWtHQ0hhbmRsZVBvb2wqPiBtX3dlYWtHQ0hhbmRsZVBvb2xzOwogCiAgICAgICAgIEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiogbV9tYXJrTGlzdFNldDsKIApAQCAtMTc2LDEw
ICsxODMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHRocmVhZF9rZXlfdCBtX2N1cnJl
bnRUaHJlYWRSZWdpc3RyYXI7CiAjZW5kaWYKIAotI2lmIE9TKFNZTUJJQU4pCiAgICAgICAgIC8v
IEFsbG9jYXRlcyBjb2xsZWN0b3IgYmxvY2tzIHdpdGggY29ycmVjdCBhbGlnbm1lbnQKICAgICAg
ICAgV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3IgbV9ibG9ja2FsbG9jYXRvcjsgCi0jZW5kaWYK
KyAgICAgICAgV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3IgbV9oYW5kbGVQb29sQWxsb2NhdG9y
OyAKICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgIH07
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcAkocmV2aXNpb24gMCkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDSGFu
ZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Jsb2NrQWxsb2NhdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitXZWFrR0NIYW5kbGVQb29sKiBXZWFrR0NIYW5kbGU6OnBvb2woKQoreworICAgIHVpbnRw
dHJfdCBwb29sID0gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSAmIFdlYWtHQ0hh
bmRsZVBvb2w6OnBvb2xNYXNrKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWFrR0NI
YW5kbGVQb29sKj4ocG9vbCk7Cit9CisKK1dlYWtHQ0hhbmRsZVBvb2w6OldlYWtHQ0hhbmRsZVBv
b2woKQoreworICAgIEFTU0VSVChzaXplb2YoV2Vha0dDSGFuZGxlUG9vbCkgPD0gV2Vha0dDSGFu
ZGxlUG9vbDo6cG9vbFNpemUpOworICAgIG1fZW50cmllc1NpemUgPSAwOworICAgIG1faW5pdGlh
bEFsbG9jID0gMTsKKyAgICBtX2VudHJpZXNbMF0ubmV4dCgwKTsKK30KKworV2Vha0dDSGFuZGxl
KiBXZWFrR0NIYW5kbGVQb29sOjphbGxvY2F0ZShKU0NlbGwqIGNlbGwpCit7CisgICAgQVNTRVJU
KGNlbGwpOworICAgIEFTU0VSVChtX2VudHJpZXNbMF0uaXNOZXh0KCkpOworICAgIHVuc2lnbmVk
IGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLm5leHQoKTsKKyAgICBBU1NFUlQoZnJlZUxpc3QgPCBX
ZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7CisgICAgQVNTRVJUKG1fZW50cmllc1Np
emUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7CisKKyAgICBpZiAobV9lbnRy
aWVzU2l6ZSA9PSBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyAtIDEpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKGZyZWVMaXN0KSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBm
cmVlTGlzdDsKKyAgICAgICAgZnJlZUxpc3QgPSBtX2VudHJpZXNbaV0ubmV4dCgpOworICAgICAg
ICBtX2VudHJpZXNbaV0ucHRyKGNlbGwpOworICAgICAgICBtX2VudHJpZXNbMF0ubmV4dChmcmVl
TGlzdCk7CisgICAgICAgICsrbV9lbnRyaWVzU2l6ZTsKKyAgICAgICAgcmV0dXJuICZtX2VudHJp
ZXNbaV07CisgICAgfSBlbHNlIGlmIChtX2luaXRpYWxBbGxvYyA8IFdlYWtHQ0hhbmRsZVBvb2w6
Om51bVBvb2xFbnRyaWVzIC0gMSkgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9pbml0aWFsQWxs
b2M7CisgICAgICAgICsrbV9pbml0aWFsQWxsb2M7CisgICAgICAgIG1fZW50cmllc1tpXS5wdHIo
Y2VsbCk7CisgICAgICAgICsrbV9lbnRyaWVzU2l6ZTsKKyAgICAgICAgcmV0dXJuICZtX2VudHJp
ZXNbaV07CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6ZnJlZShXZWFrR0NIYW5kbGUqIGhhbmRsZSkK
K3sKKyAgICBBU1NFUlQoaGFuZGxlLT5wb29sKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fZW50
cmllc1swXS5pc05leHQoKSk7CisgICAgdW5zaWduZWQgZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0u
bmV4dCgpOworICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xF
bnRyaWVzKTsKKyAgICBoYW5kbGUtPm5leHQoZnJlZUxpc3QpOworICAgIG1fZW50cmllc1swXS5u
ZXh0KGhhbmRsZSAtIG1fZW50cmllcyk7CisgICAgLS1tX2VudHJpZXNTaXplOworfQorCit2b2lk
KiBXZWFrR0NIYW5kbGVQb29sOjpvcGVyYXRvciBuZXcoc2l6ZV90LCBXVEY6OkFsaWduZWRCbG9j
a0FsbG9jYXRvciYgYWxsb2NhdG9yKQoreworICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2MoKTsK
K30KKworfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDSGFuZGxlX2gKKyNkZWZpbmUgR0NIYW5k
bGVfaAorCisjaW5jbHVkZSA8d3RmL0Jsb2NrQWxsb2NhdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBIZWFwOworY2xhc3MgSlNDZWxsOworY2xhc3MgV2Vha0dDSGFuZGxlOworY2xh
c3MgV2Vha0dDSGFuZGxlUG9vbDsKKworY2xhc3MgV2Vha0dDSGFuZGxlCit7CitwdWJsaWM6Cisg
ICAgYm9vbCBpc1ZhbGlkUHRyKCkgeyByZXR1cm4gIShtX3B0ciAmIDMpOyB9CisgICAgYm9vbCBp
c1B0cigpIHsgcmV0dXJuICEobV9wdHIgJiAxKTsgfQorICAgIGJvb2wgaXNOZXh0KCkgeyByZXR1
cm4gKG1fcHRyICYgMykgPT0gMTsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1ZhbGlkUHRyKCkpOworICAgICAgICBtX3B0ciB8PSAyOworICAgIH0K
KworICAgIEpTQ2VsbCogcHRyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1B0cigpKTsKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9wdHIgJiB+Myk7CisgICAg
fQorCisgICAgdm9pZCBwdHIoSlNDZWxsKiBwKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7CisgICAgICAgIEFTU0VSVChpc1B0cigpKTsKKyAg
ICB9CisKKyAgICB1aW50cHRyX3QgbmV4dCgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNOZXh0
KCkpOworICAgICAgICByZXR1cm4gbV9wdHIgPj4gMjsKKyAgICB9CisKKyAgICB2b2lkIG5leHQo
dWludHB0cl90IG4pCisgICAgeworICAgICAgICBtX3B0ciA9IChuIDw8IDIpIHwgMTsKKyAgICAg
ICAgQVNTRVJUKGlzTmV4dCgpKTsKKyAgICB9CisKKyAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29s
KCk7CisKK3ByaXZhdGU6CisKKyAgICB1aW50cHRyX3QgbV9wdHI7Cit9OworCitjbGFzcyBXZWFr
R0NIYW5kbGVQb29sCit7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sU2l6
ZSA9IDB4NDAwMDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xNYXNrID0gfihwb29sU2l6
ZSAtIDEpOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtUG9vbEVudHJpZXMgPSAocG9vbFNp
emUgLSBzaXplb2YoSGVhcCopIC0gMyAqIHNpemVvZih1bnNpZ25lZCkpIC8gc2l6ZW9mKFdlYWtH
Q0hhbmRsZSk7CisKKyAgICBXZWFrR0NIYW5kbGVQb29sKCk7CisKKyAgICBXZWFrR0NIYW5kbGUq
IGFsbG9jYXRlKEpTQ2VsbCogY2VsbCk7CisgICAgdm9pZCBmcmVlKFdlYWtHQ0hhbmRsZSopOwor
CisgICAgYm9vbCBpc0Z1bGwoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZW50cmllc1NpemUg
PCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7CisgICAgICAgIHJldHVybiBtX2Vu
dHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzIC0gMTsKKyAgICB9
CisKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
V1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3ImKTsKKworcHJpdmF0ZToKKyAgICBIZWFwKiBtX2hl
YXA7CisgICAgdW5zaWduZWQgbV9lbnRyaWVzU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxB
bGxvYzsKKworICAgIFdlYWtHQ0hhbmRsZSBtX2VudHJpZXNbV2Vha0dDSGFuZGxlUG9vbDo6bnVt
UG9vbEVudHJpZXNdOworfTsKKworfQorI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtHQ1B0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDUHRyLmgJKHJldmlzaW9uIDY0MjgwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWFrR0NQ
dHJfaAogCiAjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiR0NIYW5kbGUuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNCwyMyAr
MzUsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBBIHNtYXJ0IHBvaW50ZXIgd2hvc2UgZ2V0KCkg
ZnVuY3Rpb24gcmV0dXJucyAwIGZvciBjZWxscyBhd2FpdGluZyBkZXN0cnVjdGlvbi4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrR0NQdHIgOiBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
Ci0gICAgV2Vha0dDUHRyKCkgOiBtX3B0cigwKSB7IH0KKyAgICBXZWFrR0NQdHIoKQorICAgICAg
ICA6IG1fcHRyKDApCisgICAgeworICAgIH0KKwogICAgIFdlYWtHQ1B0cihUKiBwdHIpIHsgYXNz
aWduKHB0cik7IH0KIAorICAgIH5XZWFrR0NQdHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRy
KQorICAgICAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZShtX3B0cik7CisgICAgfQorCisgICAg
VCogdW5jaGVja2VkR2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wdHItPnB0cigpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgVCogZ2V0KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmICghbV9wdHIgfHwgIUhlYXA6OmlzQ2VsbE1hcmtlZChtX3B0cikpCisg
ICAgICAgIGlmIChtX3B0ciAmJiBtX3B0ci0+aXNWYWxpZFB0cigpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQqPihtX3B0ci0+cHRyKCkpOworICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1fcHRyOwogICAgIH0KICAgICAKLSAgICBi
b29sIGNsZWFyKEpTQ2VsbCogcHRyKQorICAgIGJvb2wgY2xlYXIoSlNDZWxsKiBwKQogICAgIHsK
LSAgICAgICAgaWYgKHB0ciA9PSBtX3B0cikgewotICAgICAgICAgICAgbV9wdHIgPSAwOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIW1fcHRyIHx8IG1fcHRyLT5wdHIoKSAhPSBwKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIG1fcHRyLT5wb29sKCktPmZyZWUobV9wdHIpOworICAgICAg
ICBtX3B0ciA9IDA7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIFQmIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQpAQCAtNjIsMjUgKzgzLDI4IEBAIHB1Ymxp
YzoKICNpZiBDT01QSUxFUihXSU5TQ1cpCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CiAjZWxzZQotICAgIHR5cGVkZWYgVCogV2Vha0dDUHRyOjoqVW5zcGVjaWZp
ZWRCb29sVHlwZTsKKyAgICB0eXBlZGVmIFdlYWtHQ0hhbmRsZSogV2Vha0dDUHRyOjoqVW5zcGVj
aWZpZWRCb29sVHlwZTsKICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3Qg
eyByZXR1cm4gZ2V0KCkgPyAmV2Vha0dDUHRyOjptX3B0ciA6IDA7IH0KICNlbmRpZgogCiAgICAg
V2Vha0dDUHRyJiBvcGVyYXRvcj0oVCopOworICAgIFdlYWtHQ1B0ciYgb3BlcmF0b3I9KGNvbnN0
IFdlYWtHQ1B0cjxUPiYgb3B0cik7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBo
YXNEZWFkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogI2VuZGlmCiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBhc3NpZ24oVCogcHRyKQorICAgIHZvaWQgYXNzaWduKEpTQ2VsbCogcHRy
KQogICAgIHsKICAgICAgICAgQVNTRVJUKHB0cik7Ci0gICAgICAgIEhlYXA6Om1hcmtDZWxsKHB0
cik7Ci0gICAgICAgIG1fcHRyID0gcHRyOworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAg
ICBtX3B0ci0+cHRyKHB0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHRyID0gSGVh
cDo6aGVhcChwdHIpLT5hZGRXZWFrR0NIYW5kbGUocHRyKTsKICAgICB9CiAKLSAgICBUKiBtX3B0
cjsKKyAgICBXZWFrR0NIYW5kbGUqIG1fcHRyOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrR0NQdHI8VD4mIFdlYWtHQ1B0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCkBA
IC04OSw2ICsxMTMsMTcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrR0NQdHI8
VAogICAgIHJldHVybiAqdGhpczsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBX
ZWFrR0NQdHI8VD4mIFdlYWtHQ1B0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFdlYWtHQ1B0cjxUPiYg
b3B0cikKK3sKKyAgICBBU1NFUlQob3B0ci5tX3B0cik7CisgICAgaWYgKCFtX3B0cikgeworICAg
ICAgICBKU0NlbGwqIHB0ciA9IG9wdHIubV9wdHItPnB0cigpOworICAgICAgICBtX3B0ciA9IEhl
YXA6OmhlYXAocHRyKS0+YWRkV2Vha0dDSGFuZGxlKHB0cik7CisgICAgfQorICAgICptX3B0ciA9
ICpvcHRyLm1fcHRyOworICAgIHJldHVybiAqdGhpczsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2Vha0dDUHRyPFQ+
JiBhLCBjb25zdCBXZWFrR0NQdHI8VT4mIGIpCiB7IAogICAgIHJldHVybiBhLmdldCgpID09IGIu
Z2V0KCk7IApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tBbGxvY2F0b3IuY3BwCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5oIgorI2lu
Y2x1ZGUgPHd0Zi9WTVRhZ3MuaD4KKworI2lmIE9TKEhBSUtVKQorCisjaW5jbHVkZSA8T1MuaD4K
KworI2VsaWYgT1MoVU5JWCkKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBPUyhRTlgpCisjaW5jbHVkZSA8ZmNu
dGwuaD4KKyNlbmRpZgorCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK0FsaWduZWRCbG9j
a0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKHVpbnQzMl90IGJTaXplKQorICAgIDog
YmxvY2tTaXplKGJTaXplKQoreworfQorCitBbGlnbmVkQmxvY2tBbGxvY2F0b3I6On5BbGlnbmVk
QmxvY2tBbGxvY2F0b3IoKQoreworfQorCit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVz
dHJveSgpCit7Cit9CisKK3ZvaWQqIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MoKQorewor
I2lmIEhBVkUoUE9TSVhfTUVNQUxJR04pCisgICAgdm9pZCogYWRkcmVzczsKKyAgICBwb3NpeF9t
ZW1hbGlnbigmYWRkcmVzcywgYmxvY2tTaXplLCBibG9ja1NpemUpOworI2Vsc2UKKworI2lmIEVO
QUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKKyNlcnJvciBOZWVkIHRvIGluaXRpYWxpemUgcGFn
ZXNpemUgc2FmZWx5LgorI2VuZGlmCisgICAgc3RhdGljIHNpemVfdCBwYWdlc2l6ZSA9IGdldHBh
Z2VzaXplKCk7CisKKyAgICBzaXplX3QgZXh0cmEgPSAwOworICAgIGlmIChibG9ja1NpemUgPiBw
YWdlc2l6ZSkKKyAgICAgICAgZXh0cmEgPSBibG9ja1NpemUgLSBwYWdlc2l6ZTsKKworICAgIHZv
aWQqIG1tYXBSZXN1bHQgPSBtbWFwKE5VTEwsIGJsb2NrU2l6ZSArIGV4dHJhLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CisgICAgdWludHB0
cl90IGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obW1hcFJlc3VsdCk7CisK
KyAgICBzaXplX3QgYWRqdXN0ID0gMDsKKyAgICBpZiAoKGFkZHJlc3MgJiAoYmxvY2tTaXplIC0g
MSkpICE9IDApCisgICAgICAgIGFkanVzdCA9IGJsb2NrU2l6ZSAtIChhZGRyZXNzICYgKGJsb2Nr
U2l6ZSAtIDEpKTsKKworICAgIGlmIChhZGp1c3QgPiAwKQorICAgICAgICBtdW5tYXAocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYWRkcmVzcyksIGFkanVzdCk7CisKKyAgICBpZiAoYWRqdXN0IDwg
ZXh0cmEpCisgICAgICAgIG11bm1hcChyZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzICsg
YWRqdXN0ICsgYmxvY2tTaXplKSwgZXh0cmEgLSBhZGp1c3QpOworCisgICAgYWRkcmVzcyArPSBh
ZGp1c3Q7CisjZW5kaWYKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVz
cyk7Cit9CisKK3ZvaWQgQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpmcmVlKHZvaWQqIGRhdGEpCit7
CisjaWYgSEFWRShQT1NJWF9NRU1BTElHTikKKyAgICBmcmVlKGRhdGEpOworI2Vsc2UKKyAgICBt
dW5tYXAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSksIGJsb2NrU2l6ZSAtIDEpOworI2Vu
ZGlmCit9CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5oCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrQWxsb2NhdG9yLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLwor
CisjaWZuZGVmIEJsb2NrQWxsb2NhdG9yX2gKKyNkZWZpbmUgQmxvY2tBbGxvY2F0b3JfaAorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgQWxpZ25lZEJsb2NrQWxsb2NhdG9yIHsKK3B1YmxpYzoK
KyAgICBBbGlnbmVkQmxvY2tBbGxvY2F0b3IodWludDMyX3QpOworICAgIH5BbGlnbmVkQmxvY2tB
bGxvY2F0b3IoKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICB2b2lkKiBhbGxvYygpOworICAg
IHZvaWQgZnJlZSh2b2lkKik7CisKK3ByaXZhdGU6CisgICAgc2l6ZV90IGJsb2NrU2l6ZTsKK307
CisgCit9CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDY0Mjgw
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NjgsNiArMTA2OCw4IEBAIG9uIE1pbkdXLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2gK
IAogI2RlZmluZSBFTkFCTEVfSlNDX1pPTUJJRVMgMAogCisjZGVmaW5lIEVOQUJMRV9NT1ZBQkxF
X0dDX09CSkVDVFMgMQorCiAvKiBGSVhNRTogRXZlbnR1YWxseSB3ZSBzaG91bGQgZW5hYmxlIHRo
aXMgZm9yIGFsbCBwbGF0Zm9ybXMgYW5kIGdldCByaWQgb2YgdGhlIGRlZmluZS4gKi8KICNpZiBQ
TEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUyAxCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvbWFjL0Jsb2NrQWxsb2NhdG9yTWFjLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvbWFjL0Jsb2NrQWxsb2NhdG9yTWFjLmNwcAkocmV2aXNp
b24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9tYWMvQmxvY2tBbGxvY2F0b3JNYWMuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2NrQWxsb2NhdG9y
LmgiCisjaW5jbHVkZSA8d3RmL1ZNVGFncy5oPgorCisjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQu
aD4KKyNpbmNsdWRlIDxtYWNoL3ZtX21hcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxpZ25l
ZEJsb2NrQWxsb2NhdG9yOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3IodWludDMyX3QgYlNpemUpCisg
ICAgOiBibG9ja1NpemUoYlNpemUpCit7Cit9CisKK0FsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFs
aWduZWRCbG9ja0FsbG9jYXRvcigpCit7Cit9CisKK3ZvaWQgQWxpZ25lZEJsb2NrQWxsb2NhdG9y
OjpkZXN0cm95KCkKK3sKK30KKwordm9pZCogQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjphbGxvYygp
Cit7CisgICAgdm1fYWRkcmVzc190IGFkZHJlc3MgPSAwOworICAgIHZtX21hcChjdXJyZW50X3Rh
c2soKSwgJmFkZHJlc3MsIGJsb2NrU2l6ZSwgKGJsb2NrU2l6ZSAtIDEpLCBWTV9GTEFHU19BTllX
SEVSRSB8IFZNX1RBR19GT1JfQ09MTEVDVE9SX01FTU9SWSwgTUVNT1JZX09CSkVDVF9OVUxMLCAw
LCBGQUxTRSwgVk1fUFJPVF9ERUZBVUxULCBWTV9QUk9UX0RFRkFVTFQsIFZNX0lOSEVSSVRfREVG
QVVMVCk7CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcyk7Cit9
CisKK3ZvaWQgQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpmcmVlKHZvaWQqIGRhdGEpCit7CisgICAg
dm1fZGVhbGxvY2F0ZShjdXJyZW50X3Rhc2soKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNz
X3Q+KGRhdGEpLCBibG9ja1NpemUgLSAxKTsKK30KKworfQpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL3dpbi9CbG9ja0FsbG9jYXRvcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3dpbi9CbG9ja0FsbG9jYXRvcldpbi5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2Ny
aXB0Q29yZS93dGYvd2luL0Jsb2NrQWxsb2NhdG9yV2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5oIgorI2luY2x1ZGUgPHd0
Zi9WTVRhZ3MuaD4KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK0FsaWduZWRCbG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2Nr
QWxsb2NhdG9yKHVpbnQzMl90IGJTaXplKQorICAgIDogYmxvY2tTaXplKGJTaXplKQoreworfQor
CitBbGlnbmVkQmxvY2tBbGxvY2F0b3I6On5BbGlnbmVkQmxvY2tBbGxvY2F0b3IoKQoreworfQor
Cit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVzdHJveSgpCit7Cit9CisKK3ZvaWQqIEFs
aWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MoKQoreworI2lmIENPTVBJTEVSKE1JTkdXKSAmJiAh
Q09NUElMRVIoTUlOR1c2NCkKKyAgICB2b2lkKiBhZGRyZXNzID0gX19taW5nd19hbGlnbmVkX21h
bGxvYyhibG9ja1NpemUsIGJsb2NrU2l6ZSk7CisjZWxzZQorICAgIHZvaWQqIGFkZHJlc3MgPSBf
YWxpZ25lZF9tYWxsb2MoYmxvY2tTaXplLCBibG9ja1NpemUpOworI2VuZGlmCisgICAgbWVtc2V0
KGFkZHJlc3MsIDAsIGJsb2NrU2l6ZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGFkZHJlc3MpOworfQorCit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZnJlZSh2b2lk
KiBkYXRhKQoreworI2lmIENPTVBJTEVSKE1JTkdXKSAmJiAhQ09NUElMRVIoTUlOR1c2NCkKKyAg
ICBfX21pbmd3X2FsaWduZWRfZnJlZShkYXRhKTsKKyNlbHNlCisgICAgX2FsaWduZWRfZnJlZShk
YXRhKTsKKyNlbmRpZgorfQorCit9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvQmxv
Y2tBbGxvY2F0b3JXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3dp
bmNlL0Jsb2NrQWxsb2NhdG9yV2luQ0UuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL3dpbmNlL0Jsb2NrQWxsb2NhdG9yV2luQ0UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2NrQWxsb2NhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L1ZNVGFncy5oPgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpBbGlnbmVkQmxvY2tB
bGxvY2F0b3IodWludDMyX3QgYlNpemUpCisgICAgOiBibG9ja1NpemUoYlNpemUpCit7Cit9CisK
K0FsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFsaWduZWRCbG9ja0FsbG9jYXRvcigpCit7Cit9CisK
K3ZvaWQgQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpkZXN0cm95KCkKK3sKK30KKwordm9pZCogQWxp
Z25lZEJsb2NrQWxsb2NhdG9yOjphbGxvYygpCit7CisgICAgdm9pZCogYWRkcmVzcyA9IFZpcnR1
YWxBbGxvYyhOVUxMLCBibG9ja1NpemUsIE1FTV9DT01NSVQgfCBNRU1fUkVTRVJWRSwgUEFHRV9S
RUFEV1JJVEUpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzKTsK
K30KKwordm9pZCBBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUodm9pZCogZGF0YSkKK3sKKyAg
ICBWaXJ0dWFsRnJlZShkYXRhLCAwLCBNRU1fUkVMRUFTRSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62986</attachid>
            <date>2010-07-29 13:49:26 -0700</date>
            <delta_ts>2010-08-04 14:15:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>41653</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MzA0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODIgQEAKKzIwMTAtMDctMjkgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IFdlYWtHQ1B0ciBpcyBub3cgaW5kaXJlY3QgdG8g
YWxsb3cgdmFsdWVzIHRvIGJlIHVwZGF0ZWQgd2hlbgorICAgICAgICBvYmplY3RzIGFyZSBtb3Zl
ZC4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRvIHN1cHBvcnQgdGhlIGFsbG9jYXRpb24gb2Yg
YWxpZ25lZCBtZW1vcnksIEkgbW92ZWQKKyAgICAgICAgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNv
ZGUgZnJvbSBhbGxvY2F0ZUJsb2NrKCkgYW5kIGZyZWVCbG9ja1B0cigpCisgICAgICAgIGluIEhl
YXAgdG8gYW4gQWxpZ25lZEJsb2NrQWxsb2NhdG9yIGNsYXNzIHRoYXQgbWF0Y2hlZCB0aGUgZXhp
c3RpbmcKKyAgICAgICAgb25lIGZvciBTeW1iaWFuLgorCisgICAgICAgICogQW5kcm9pZC5tazoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
aToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcm86CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZXN0cm95KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgIChK
U0M6OkhlYXA6OmZyZWVCbG9jayk6CisgICAgICAgIChKU0M6OkhlYXA6OmZyZWVCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDSGFuZGxlUG9vbDo6dXBkYXRlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkV2Vha0dD
SGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBydW50
aW1lL0NvbGxlY3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwb29sKToKKyAgICAgICAgKEpTQzo6V2Vha0dD
SGFuZGxlUG9vbDo6V2Vha0dDSGFuZGxlUG9vbCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRs
ZVBvb2w6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6ZnJlZSk6
CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyk6CisgICAgICAg
ICogcnVudGltZS9HQ0hhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxl
Ojppc1ZhbGlkUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1B0cik6CisgICAg
ICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6aXNOZXh0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFu
ZGxlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwdHIpOgorICAg
ICAgICAoSlNDOjpXZWFrR0NIYW5kbGU6Om5leHQpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5k
bGVQb29sOjppc0Z1bGwpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDUHRyLmg6CisgICAgICAg
IChKU0M6OldlYWtHQ1B0cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp+
V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp1bmNoZWNrZWRHZXQpOgorICAg
ICAgICAoSlNDOjpXZWFrR0NQdHI6OmdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6Y2xl
YXIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OmFzc2lnbik6CisgICAgICAgIChKU0M6Ojo6
b3BlcmF0b3IpOgorICAgICAgICAqIHd0Zi9CbG9ja0FsbG9jYXRvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OkFsaWduZWRCbG9ja0FsbG9jYXRvcik6
CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFsaWduZWRCbG9ja0FsbG9j
YXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVzdHJveSk6Cisg
ICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MpOgorICAgICAgICAoV1RG
OjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUpOgorICAgICAgICAqIHd0Zi9CbG9ja0FsbG9j
YXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
bWFjL0Jsb2NrQWxsb2NhdG9yTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkFsaWduZWRC
bG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6QWxp
Z25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdU
Rjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKFdURjo6QWxpZ25l
ZEJsb2NrQWxsb2NhdG9yOjphbGxvYyk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9j
YXRvcjo6ZnJlZSk6CisgICAgICAgICogd3RmL3dpbi9CbG9ja0FsbG9jYXRvcldpbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OkFsaWduZWRCbG9ja0Fs
bG9jYXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6fkFsaWduZWRC
bG9ja0FsbG9jYXRvcik6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVz
dHJveSk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MpOgorICAg
ICAgICAoV1RGOjpBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUpOgorICAgICAgICAqIHd0Zi93
aW5jZS9CbG9ja0FsbG9jYXRvcldpbkNFLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkFsaWdu
ZWRCbG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKFdURjo6
QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAg
KFdURjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKFdURjo6QWxp
Z25lZEJsb2NrQWxsb2NhdG9yOjphbGxvYyk6CisgICAgICAgIChXVEY6OkFsaWduZWRCbG9ja0Fs
bG9jYXRvcjo6ZnJlZSk6CisKIDIwMTAtMDctMjkgIEdhYm9yIExva2kgIDxsb2tpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FuZHJv
aWQubWsJKHJldmlzaW9uIDY0MzA0KQorKysgSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawkod29y
a2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gXAogCXJ1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgXAogCXJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAog
CXJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKKwlydW50aW1lL0dDSGFuZGxlLmNwcCBc
CiAJcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlv
bi5jcHAgXAogCXJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApAQCAtMTU0LDYgKzE1NSw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSBcCiAJcnVudGltZS9VU3RyaW5nLmNwcCBcCiAJXAogCXd0Zi9Bc3Nl
cnRpb25zLmNwcCBcCisJd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAJd3RmL0J5dGVBcnJheS5j
cHAgXAogCXd0Zi9DdXJyZW50VGltZS5jcHAgXAogCXd0Zi9EYXRlTWF0aC5jcHAgXApJbmRleDog
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY0MzA0KQorKysgSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBTRVQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHAKICAgICBydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0dDSGFuZGxlLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRp
Zmllci5jcHAKQEAgLTE2Nyw2ICsxNjgsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHlhcnIvUmVnZXhJbnRlcnByZXRlci5jcHAKICAgICB5YXJyL1JlZ2V4SklULmNwcAogCisg
ICAgd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcAogICAgIHd0Zi9EYXRlTWF0aC5jcHAKICAgICB3dGYv
UGFnZUFsbG9jYXRpb24uY3BwCiApCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NjQzMDQpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtMjY1LDYgKzI2NSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5oIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNw
cCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oIFwKIAlKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
dGVyU2V0dGVyLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9u
LmNwcCBcCkBAIC00MDksNiArNDExLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
SmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0F0
b21pY3MuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0FWTFRyZWUuaCBcCisJSmF2YVNjcmlwdENv
cmUvd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrQWxs
b2NhdG9yLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIFwK
IAlKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3Rm
L0J5dGVBcnJheS5oIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9u
IDY0MzA0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgX19aTjNKU0MxMlN0cmluZ09iamVjdDI0Z2V0T3duUHJv
cGVydHlEZQogX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0Mx
MlN0cmluZ09iamVjdDRpbmZvRQogX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185RXhlY1N0
YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183VVN0cmlu
Z0UKK19fWk4zSlNDMTJXZWFrR0NIYW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1iZXJDZWxs
RVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNKU0MxM1Nh
bXBsaW5nRmxhZ3M0c3RvcEV2CkBAIC0xNzEsNiArMTcyLDcgQEAgX19aTjNKU0MxNkludGVybmFs
RnVuY3Rpb25DMkVQTlNfMTJKU0dsbwogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0
ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpT
VmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFBy
b3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9w
ZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51
bWVyYXRpb25Nb2RlRQorX19aTjNKU0MxNldlYWtHQ0hhbmRsZVBvb2w0ZnJlZUVQTlNfMTJXZWFr
R0NIYW5kbGVFCiBfX1pOM0pTQzE2Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzdVU3RyaW5nRQogX19aTjNKU0MxNnRocm93U3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0pTQzE2dG9VSW50MzJTbG93Q2FzZUVkUmIKQEAgLTIwMSw2ICsyMDMsNyBAQCBfX1pOM0pT
QzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TCiBfX1pOM0pTQzM1Y3JlYXRlSW50ZXJy
dXB0ZWRFeGVjdXRpb25FeGNlcHRpb25FUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MzTmFO
RQogX19aTjNKU0M0SGVhcDE0cHJpbWFyeUhlYXBFbmRFdgorX19aTjNKU0M0SGVhcDE1YWRkV2Vh
a0dDSGFuZGxlRVBOU182SlNDZWxsRQogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0K
IF9fWk4zSlNDNEhlYXAxNm9iamVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE2cHJpbWFy
eUhlYXBCZWdpbkV2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9u
IDY0MzA0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMjE0LDYgKzIxNCw4IEBACiAgICAgICAgICAgICAncnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
JywKICAgICAgICAgICAgICdydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgnLAorICAgICAgICAg
ICAgJ3J1bnRpbWUvR0NIYW5kbGUuY3BwJywKKyAgICAgICAgICAgICdydW50aW1lL0dDSGFuZGxl
LmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAg
ICAncnVudGltZS9HZXR0ZXJTZXR0ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxF
dmFsRnVuY3Rpb24uY3BwJywKQEAgLTM0OCw2ICszNTAsOCBAQAogICAgICAgICAgICAgJ3d0Zi9B
c3NlcnRpb25zLmgnLAogICAgICAgICAgICAgJ3d0Zi9BdG9taWNzLmgnLAogICAgICAgICAgICAg
J3d0Zi9BVkxUcmVlLmgnLAorICAgICAgICAgICAgJ3d0Zi9CbG9ja0FsbG9jYXRvci5jcHAnLAor
ICAgICAgICAgICAgJ3d0Zi9CbG9ja0FsbG9jYXRvci5oJywKICAgICAgICAgICAgICd3dGYvQnl0
ZUFycmF5LmNwcCcsCiAgICAgICAgICAgICAnd3RmL0J5dGVBcnJheS5oJywKICAgICAgICAgICAg
ICd3dGYvY2hyb21pdW0vQ2hyb21pdW1UaHJlYWRpbmcuaCcsCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJvCShyZXZpc2lvbiA2NDMwNCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKKyAgICBy
dW50aW1lL0dDSGFuZGxlLmNwcCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAg
ICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmll
ci5jcHAgXApAQCAtMjAxLDYgKzIwMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvVGlt
ZW91dENoZWNrZXIuY3BwIFwKICAgICBydW50aW1lL1VTdHJpbmcuY3BwIFwKICAgICB3dGYvQXNz
ZXJ0aW9ucy5jcHAgXAorICAgIHd0Zi9CbG9ja0FsbG9jYXRvci5jcHAgXAogICAgIHd0Zi9CeXRl
QXJyYXkuY3BwIFwKICAgICB3dGYvQ3VycmVudFRpbWUuY3BwIFwKICAgICB3dGYvRGF0ZU1hdGgu
Y3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQzMDQpCisrKyBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01MDgsNiArNTA4LDEwIEBACiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJCUJD
RkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2RTE1IC8qIE5vdEZvdW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEEyNzIz
RjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlERDEyRkNGODExRkVCMUNEMDBENTZBNDcgLyogQmxv
Y2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEREMTJGQ0Y2MTFGRUIxQ0QwMEQ1NkE0NyAvKiBCbG9ja0FsbG9jYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURENkMzQjVBMTIwMUUy
MUIwMEQxMUQwOSAvKiBCbG9ja0FsbG9jYXRvck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDZDM0I1OTEyMDFFMjFCMDBEMTFEMDkgLyogQmxv
Y2tBbGxvY2F0b3JNYWMuY3BwICovOyB9OworCQlERDlGOTFGMDExRkVCQTA1MDBDNDk1NDUgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREQ5RjkxRUUxMUZFQkEwNTAwQzQ5NTQ1IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJREQ5
RjkxRjExMUZFQkEwNTAwQzQ5NTQ1IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDlGOTFFRjExRkVCQTA1MDBDNDk1NDUgLyogR0NI
YW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlF
MTc4NjM2RDBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjM2QzBEOUJFRUMz
MDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CkBAIC0xMDQ5LDYgKzEw
NTMsMTAgQEAKIAkJQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEZvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5
QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUREMTJGQ0Y2
MTFGRUIxQ0QwMEQ1NkE0NyAvKiBCbG9ja0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCbG9ja0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlERDZDM0I1OTEyMDFFMjFCMDBEMTFEMDkgLyogQmxvY2tBbGxvY2F0b3JNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tBbGxvY2F0b3JNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDlGOTFFRTExRkVCQTA1MDBDNDk1NDUg
LyogR0NIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NI
YW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDlGOTFFRjExRkVCQTA1
MDBDNDk1NDUgLyogR0NIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R0NIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTExRDUxNzUwQjJFNzk4
RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4
RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTY3LDYgKzExNzUsNyBAQAogCQkwNkQzNThB
MDBEQUFEOUM0MDAzQjE3NEUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlERDZDM0I1OTEyMDFFMjFCMDBEMTFEMDkgLyogQmxvY2tBbGxvY2F0
b3JNYWMuY3BwICovLAogCQkJCTA2RDM1OEExMERBQUQ5QzQwMDNCMTc0RSAvKiBNYWluVGhyZWFk
TWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0xNDA2LDYgKzE0MTUsNyBAQAog
CQkJCTY1RTIxN0I3MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmggKi8sCiAJCQkJQkM1
RjdCQkIxMTgyM0I1OTAwNTJDMDJDIC8qIEF0b21pY3MuaCAqLywKIAkJCQlFMUE1OTYzNzBERTNF
MUMzMDBDMTdFMzcgLyogQVZMVHJlZS5oICovLAorCQkJCUREMTJGQ0Y2MTFGRUIxQ0QwMEQ1NkE0
NyAvKiBCbG9ja0FsbG9jYXRvci5oICovLAogCQkJCTg2Njc2RDREMTFGRUQ1NUQwMDRCNjg2MyAv
KiBCdW1wUG9pbnRlckFsbG9jYXRvci5oICovLAogCQkJCUE3QTFGN0FBMEYyNTJCM0MwMEUxODRF
MiAvKiBCeXRlQXJyYXkuY3BwICovLAogCQkJCUE3QTFGN0FCMEYyNTJCM0MwMEUxODRFMiAvKiBC
eXRlQXJyYXkuaCAqLywKQEAgLTE1NTUsNiArMTU2NSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlERDlGOTFFRTExRkVCQTA1MDBDNDk1NDUgLyogR0NIYW5kbGUuY3BwICovLAor
CQkJCUREOUY5MUVGMTFGRUJBMDUwMEM0OTU0NSAvKiBHQ0hhbmRsZS5oICovLAogCQkJCUJDRjYw
NTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZD
OSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjE5Myw2ICsyMjA1LDggQEAKIAkJCQk4NjhCRkEx
ODExN0NGMTk5MDBCOTA4QjEgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQw
OEQ1NDExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJREQxMkZDRjgxMUZFQjFDRDAwRDU2QTQ3IC8qIEJsb2NrQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERDlGOTFGMTExRkVCQTA1MDBDNDk1NDUgLyogR0NIYW5kbGUuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjYzMyw2ICsyNjQ3LDggQEAKIAkJCQk4NjhCRkExNzExN0NGMTk5
MDBCOTA4QjEgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDA4RDUzMTE3
OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
MjdFNUVCMTFGMTI4MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlERDlGOTFGMDExRkVCQTA1MDBDNDk1NDUgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJREQ2QzNCNUExMjAxRTIxQjAwRDExRDA5IC8qIEJsb2NrQWxsb2NhdG9yTWFj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAkocmV2aXNpb24gNjQzMDQpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2xsZWN0b3JIZWFwSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJHQ0hhbmRsZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0xMzcs
NyArMTM4LDEwIEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogI2VuZGlm
CiAjaWYgT1MoU1lNQklBTikKICAgICAsIG1fYmxvY2thbGxvY2F0b3IoSlNDQ09MTEVDVE9SX1ZJ
UlRVQUxNRU1fUkVTRVJWQVRJT04sIEJMT0NLX1NJWkUpCisjZWxzZQorICAgICwgbV9ibG9ja2Fs
bG9jYXRvcihCTE9DS19TSVpFKQogI2VuZGlmCisgICAgLCBtX2hhbmRsZVBvb2xBbGxvY2F0b3Io
V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemUpCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKIHsKICAgICBBU1NFUlQoZ2xvYmFsRGF0YSk7CkBAIC0xODMsNTkgKzE4NywxNiBAQCB2b2lk
IEhlYXA6OmRlc3Ryb3koKQogICAgICAgICB0ID0gbmV4dDsKICAgICB9CiAjZW5kaWYKLSNpZiBP
UyhTWU1CSUFOKQogICAgIG1fYmxvY2thbGxvY2F0b3IuZGVzdHJveSgpOwotI2VuZGlmCisgICAg
bV9oYW5kbGVQb29sQWxsb2NhdG9yLmRlc3Ryb3koKTsKICAgICBtX2dsb2JhbERhdGEgPSAwOwog
fQogCiBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6OmFsbG9jYXRlQmxvY2soKQog
ewotI2lmIE9TKERBUldJTikKLSAgICB2bV9hZGRyZXNzX3QgYWRkcmVzcyA9IDA7Ci0gICAgdm1f
bWFwKGN1cnJlbnRfdGFzaygpLCAmYWRkcmVzcywgQkxPQ0tfU0laRSwgQkxPQ0tfT0ZGU0VUX01B
U0ssIFZNX0ZMQUdTX0FOWVdIRVJFIHwgVk1fVEFHX0ZPUl9DT0xMRUNUT1JfTUVNT1JZLCBNRU1P
UllfT0JKRUNUX05VTEwsIDAsIEZBTFNFLCBWTV9QUk9UX0RFRkFVTFQsIFZNX1BST1RfREVGQVVM
VCwgVk1fSU5IRVJJVF9ERUZBVUxUKTsKLSNlbGlmIE9TKFNZTUJJQU4pCiAgICAgdm9pZCogYWRk
cmVzcyA9IG1fYmxvY2thbGxvY2F0b3IuYWxsb2MoKTsgIAogICAgIGlmICghYWRkcmVzcykKICAg
ICAgICAgQ1JBU0goKTsKLSNlbGlmIE9TKFdJTkNFKQotICAgIHZvaWQqIGFkZHJlc3MgPSBWaXJ0
dWFsQWxsb2MoTlVMTCwgQkxPQ0tfU0laRSwgTUVNX0NPTU1JVCB8IE1FTV9SRVNFUlZFLCBQQUdF
X1JFQURXUklURSk7Ci0jZWxpZiBPUyhXSU5ET1dTKQotI2lmIENPTVBJTEVSKE1JTkdXKSAmJiAh
Q09NUElMRVIoTUlOR1c2NCkKLSAgICB2b2lkKiBhZGRyZXNzID0gX19taW5nd19hbGlnbmVkX21h
bGxvYyhCTE9DS19TSVpFLCBCTE9DS19TSVpFKTsKLSNlbHNlCi0gICAgdm9pZCogYWRkcmVzcyA9
IF9hbGlnbmVkX21hbGxvYyhCTE9DS19TSVpFLCBCTE9DS19TSVpFKTsKLSNlbmRpZgotICAgIG1l
bXNldChhZGRyZXNzLCAwLCBCTE9DS19TSVpFKTsKLSNlbGlmIEhBVkUoUE9TSVhfTUVNQUxJR04p
Ci0gICAgdm9pZCogYWRkcmVzczsKLSAgICBwb3NpeF9tZW1hbGlnbigmYWRkcmVzcywgQkxPQ0tf
U0laRSwgQkxPQ0tfU0laRSk7Ci0jZWxzZQotCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJF
QURTKQotI2Vycm9yIE5lZWQgdG8gaW5pdGlhbGl6ZSBwYWdlc2l6ZSBzYWZlbHkuCi0jZW5kaWYK
LSAgICBzdGF0aWMgc2l6ZV90IHBhZ2VzaXplID0gZ2V0cGFnZXNpemUoKTsKLQotICAgIHNpemVf
dCBleHRyYSA9IDA7Ci0gICAgaWYgKEJMT0NLX1NJWkUgPiBwYWdlc2l6ZSkKLSAgICAgICAgZXh0
cmEgPSBCTE9DS19TSVpFIC0gcGFnZXNpemU7Ci0KLSAgICB2b2lkKiBtbWFwUmVzdWx0ID0gbW1h
cChOVUxMLCBCTE9DS19TSVpFICsgZXh0cmEsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9Q
UklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKLSAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtbWFwUmVzdWx0KTsKLQotICAgIHNpemVfdCBhZGp1c3Qg
PSAwOwotICAgIGlmICgoYWRkcmVzcyAmIEJMT0NLX09GRlNFVF9NQVNLKSAhPSAwKQotICAgICAg
ICBhZGp1c3QgPSBCTE9DS19TSVpFIC0gKGFkZHJlc3MgJiBCTE9DS19PRkZTRVRfTUFTSyk7Ci0K
LSAgICBpZiAoYWRqdXN0ID4gMCkKLSAgICAgICAgbXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGFkZHJlc3MpLCBhZGp1c3QpOwotCi0gICAgaWYgKGFkanVzdCA8IGV4dHJhKQotICAgICAg
ICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRkcmVzcyArIGFkanVzdCArIEJMT0NL
X1NJWkUpLCBleHRyYSAtIGFkanVzdCk7Ci0KLSAgICBhZGRyZXNzICs9IGFkanVzdDsKLSNlbmRp
ZgogCiAgICAgLy8gSW5pdGlhbGl6ZSBibG9jay4KIApAQCAtMjcxLDcgKzIzMiw3IEBAIE5FVkVS
X0lOTElORSB2b2lkIEhlYXA6OmZyZWVCbG9jayhzaXplX3QKICAgICBPYmplY3RJdGVyYXRvciBl
bmQobV9oZWFwLCBibG9jayArIDEpOwogICAgIGZvciAoIDsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICAoKml0KS0+fkpTQ2VsbCgpOwotICAgIGZyZWVCbG9ja1B0cihtX2hlYXAuYmxvY2tzW2Js
b2NrXSk7CisgICAgbV9ibG9ja2FsbG9jYXRvci5mcmVlKG1faGVhcC5ibG9ja3NbYmxvY2tdKTsK
IAogICAgIC8vIHN3YXAgd2l0aCB0aGUgbGFzdCBibG9jayBzbyB3ZSBjb21wYWN0IGFzIHdlIGdv
CiAgICAgbV9oZWFwLmJsb2Nrc1tibG9ja10gPSBtX2hlYXAuYmxvY2tzW21faGVhcC51c2VkQmxv
Y2tzIC0gMV07CkBAIC0yODMsMjcgKzI0NCw2IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmZy
ZWVCbG9jayhzaXplX3QKICAgICB9CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmZyZWVC
bG9ja1B0cihDb2xsZWN0b3JCbG9jayogYmxvY2spCi17Ci0jaWYgT1MoREFSV0lOKSAgICAKLSAg
ICB2bV9kZWFsbG9jYXRlKGN1cnJlbnRfdGFzaygpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJl
c3NfdD4oYmxvY2spLCBCTE9DS19TSVpFKTsKLSNlbGlmIE9TKFNZTUJJQU4pCi0gICAgbV9ibG9j
a2FsbG9jYXRvci5mcmVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGJsb2NrKSk7Ci0jZWxpZiBP
UyhXSU5DRSkKLSAgICBWaXJ0dWFsRnJlZShibG9jaywgMCwgTUVNX1JFTEVBU0UpOwotI2VsaWYg
T1MoV0lORE9XUykKLSNpZiBDT01QSUxFUihNSU5HVykgJiYgIUNPTVBJTEVSKE1JTkdXNjQpCi0g
ICAgX19taW5nd19hbGlnbmVkX2ZyZWUoYmxvY2spOwotI2Vsc2UKLSAgICBfYWxpZ25lZF9mcmVl
KGJsb2NrKTsKLSNlbmRpZgotI2VsaWYgSEFWRShQT1NJWF9NRU1BTElHTikKLSAgICBmcmVlKGJs
b2NrKTsKLSNlbHNlCi0gICAgbXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSwg
QkxPQ0tfU0laRSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBIZWFwOjpmcmVlQmxvY2tzKCkKIHsKICAg
ICBQcm90ZWN0Q291bnRTZXQgcHJvdGVjdGVkVmFsdWVzQ29weSA9IG1fcHJvdGVjdGVkVmFsdWVz
OwpAQCAtMzI3LDcgKzI2Nyw3IEBAIHZvaWQgSGVhcDo6ZnJlZUJsb2NrcygpCiAgICAgICAgIGl0
LT5maXJzdC0+fkpTQ2VsbCgpOwogCiAgICAgZm9yIChzaXplX3QgYmxvY2sgPSAwOyBibG9jayA8
IG1faGVhcC51c2VkQmxvY2tzOyArK2Jsb2NrKQotICAgICAgICBmcmVlQmxvY2tQdHIobV9oZWFw
LmJsb2Nrc1tibG9ja10pOworICAgICAgICBtX2Jsb2NrYWxsb2NhdG9yLmZyZWUobV9oZWFwLmJs
b2Nrc1tibG9ja10pOwogCiAgICAgZmFzdEZyZWUobV9oZWFwLmJsb2Nrcyk7CiAKQEAgLTk3Miw2
ICs5MTIsMzUgQEAgdm9pZCBIZWFwOjptYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbAogI2Vu
ZGlmCiB9CiAKK3ZvaWQgSGVhcDo6dXBkYXRlV2Vha0dDSGFuZGxlcygpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgbV93ZWFrR0NIYW5kbGVQb29sc1tpXS0+dXBkYXRlKCk7CisgICAgfQorfQorCit2b2lk
IFdlYWtHQ0hhbmRsZVBvb2w6OnVwZGF0ZSgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fZW50cmllc1tpXS5pc1ZhbGlkUHRyKCkpIHsKKyAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IG1fZW50cmllc1tpXS5wdHIoKTsKKyAgICAgICAgICAgIGlmICghY2VsbCB8fCAhSGVhcDo6aXND
ZWxsTWFya2VkKGNlbGwpKQorICAgICAgICAgICAgICAgIG1fZW50cmllc1tpXS5pbnZhbGlkYXRl
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1dlYWtHQ0hhbmRsZSogSGVhcDo6YWRkV2Vha0dD
SGFuZGxlKEpTQ2VsbCogcHRyKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dl
YWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQorICAgICAgICBpZiAoIW1fd2Vha0dDSGFuZGxl
UG9vbHNbaV0tPmlzRnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fd2Vha0dDSGFuZGxlUG9v
bHNbaV0tPmFsbG9jYXRlKHB0cik7CisKKworICAgIG1fd2Vha0dDSGFuZGxlUG9vbHMuYXBwZW5k
KG5ldyAobV9oYW5kbGVQb29sQWxsb2NhdG9yKSBXZWFrR0NIYW5kbGVQb29sKTsKKyAgICByZXR1
cm4gbV93ZWFrR0NIYW5kbGVQb29scy5sYXN0KCktPmFsbG9jYXRlKHB0cik7Cit9CisKIHZvaWQg
SGVhcDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7CiAgICAgQVNTRVJUKGspOwpAQCAtMTEwOCw2ICsx
MDc3LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIG1hcmtTdGFjay5kcmFpbigpOwog
ICAgIG1hcmtTdGFjay5jb21wYWN0KCk7CiAKKyAgICB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7CisK
ICAgICBtX2hlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwogfQogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHJldmlzaW9uIDY0MzA0KQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
OCBAQAogCiAjaWYgT1MoU1lNQklBTikKICNpbmNsdWRlIDx3dGYvc3ltYmlhbi9CbG9ja0FsbG9j
YXRvclN5bWJpYW4uaD4KKyNlbHNlCisjaW5jbHVkZSA8d3RmL0Jsb2NrQWxsb2NhdG9yLmg+CiAj
ZW5kaWYKIAogI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKGNsYXNzKSBDT01QSUxF
X0FTU0VSVChzaXplb2YoY2xhc3MpIDw9IENFTExfU0laRSwgY2xhc3NfZml0c19pbl9jZWxsKQpA
QCAtNTAsNiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAg
IGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIE1hcmtTdGFjazsKKyAgICBj
bGFzcyBXZWFrR0NIYW5kbGU7CisgICAgY2xhc3MgV2Vha0dDSGFuZGxlUG9vbDsKIAogICAgIGVu
dW0gT3BlcmF0aW9uSW5Qcm9ncmVzcyB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBDb2xsZWN0
aW9uIH07CiAKQEAgLTExNSw2ICsxMTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNDZWxsTWFya2VkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgdm9p
ZCBtYXJrQ2VsbChKU0NlbGwqKTsKIAorICAgICAgICBXZWFrR0NIYW5kbGUqIGFkZFdlYWtHQ0hh
bmRsZShKU0NlbGwqKTsKKwogICAgICAgICB2b2lkIG1hcmtDb25zZXJ2YXRpdmVseShNYXJrU3Rh
Y2smLCB2b2lkKiBzdGFydCwgdm9pZCogZW5kKTsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4mIG1hcmtMaXN0U2V0KCkgeyBpZiAoIW1fbWFya0xpc3RTZXQpIG1fbWFy
a0xpc3RTZXQgPSBuZXcgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+OyByZXR1cm4gKm1f
bWFya0xpc3RTZXQ7IH0KQEAgLTEzNyw3ICsxNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIGFsbG9jYXRlQmxvY2soKTsKICAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgZnJlZUJsb2NrKHNpemVfdCk7Ci0gICAgICAgIE5FVkVSX0lO
TElORSB2b2lkIGZyZWVCbG9ja1B0cihDb2xsZWN0b3JCbG9jayopOwogICAgICAgICB2b2lkIGZy
ZWVCbG9ja3MoKTsKICAgICAgICAgdm9pZCByZXNpemVCbG9ja3MoKTsKICAgICAgICAgdm9pZCBn
cm93QmxvY2tzKHNpemVfdCBuZWVkZWRCbG9ja3MpOwpAQCAtMTU2LDEyICsxNjEsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVs
eUludGVybmFsKE1hcmtTdGFjayYpOwogICAgICAgICB2b2lkIG1hcmtPdGhlclRocmVhZENvbnNl
cnZhdGl2ZWx5KE1hcmtTdGFjayYsIFRocmVhZCopOwogICAgICAgICB2b2lkIG1hcmtTdGFja09i
amVjdHNDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCB1cGRhdGVXZWFr
R0NIYW5kbGVzKCk7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiBQ
cm90ZWN0Q291bnRTZXQ7CiAKICAgICAgICAgQ29sbGVjdG9ySGVhcCBtX2hlYXA7CiAKICAgICAg
ICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVkVmFsdWVzOworICAgICAgICBXVEY6OlZlY3Rv
cjxXZWFrR0NIYW5kbGVQb29sKj4gbV93ZWFrR0NIYW5kbGVQb29sczsKIAogICAgICAgICBIYXNo
U2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CiAKQEAgLTE3NiwxMCAr
MTgzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHB0aHJlYWRfa2V5X3QgbV9jdXJyZW50
VGhyZWFkUmVnaXN0cmFyOwogI2VuZGlmCiAKLSNpZiBPUyhTWU1CSUFOKQogICAgICAgICAvLyBB
bGxvY2F0ZXMgY29sbGVjdG9yIGJsb2NrcyB3aXRoIGNvcnJlY3QgYWxpZ25tZW50CiAgICAgICAg
IFdURjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yIG1fYmxvY2thbGxvY2F0b3I7IAotI2VuZGlmCisg
ICAgICAgIFdURjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yIG1faGFuZGxlUG9vbEFsbG9jYXRvcjsg
CiAgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICB9OwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0hhbmRs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja0FsbG9jYXRvci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworV2Vha0dDSGFuZGxlUG9vbCogV2Vha0dDSGFuZGxlOjpwb29sKCkKK3sKKyAgICB1aW50cHRy
X3QgcG9vbCA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgJiBXZWFrR0NIYW5k
bGVQb29sOjpwb29sTWFzayk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0dDSGFu
ZGxlUG9vbCo+KHBvb2wpOworfQorCitXZWFrR0NIYW5kbGVQb29sOjpXZWFrR0NIYW5kbGVQb29s
KCkKK3sKKyAgICBBU1NFUlQoc2l6ZW9mKFdlYWtHQ0hhbmRsZVBvb2wpIDw9IFdlYWtHQ0hhbmRs
ZVBvb2w6OnBvb2xTaXplKTsKKyAgICBtX2VudHJpZXNTaXplID0gMDsKKyAgICBtX2luaXRpYWxB
bGxvYyA9IDE7CisgICAgbV9lbnRyaWVzWzBdLm5leHQoMCk7Cit9CisKK1dlYWtHQ0hhbmRsZSog
V2Vha0dDSGFuZGxlUG9vbDo6YWxsb2NhdGUoSlNDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVChj
ZWxsKTsKKyAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKKyAgICB1bnNpZ25lZCBm
cmVlTGlzdCA9IG1fZW50cmllc1swXS5uZXh0KCk7CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vh
a0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworICAgIEFTU0VSVChtX2VudHJpZXNTaXpl
IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworCisgICAgaWYgKG1fZW50cmll
c1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChmcmVlTGlzdCkgeworICAgICAgICB1bnNpZ25lZCBpID0gZnJl
ZUxpc3Q7CisgICAgICAgIGZyZWVMaXN0ID0gbV9lbnRyaWVzW2ldLm5leHQoKTsKKyAgICAgICAg
bV9lbnRyaWVzW2ldLnB0cihjZWxsKTsKKyAgICAgICAgbV9lbnRyaWVzWzBdLm5leHQoZnJlZUxp
c3QpOworICAgICAgICArK21fZW50cmllc1NpemU7CisgICAgICAgIHJldHVybiAmbV9lbnRyaWVz
W2ldOworICAgIH0gZWxzZSBpZiAobV9pbml0aWFsQWxsb2MgPCBXZWFrR0NIYW5kbGVQb29sOjpu
dW1Qb29sRW50cmllcyAtIDEpIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1faW5pdGlhbEFsbG9j
OworICAgICAgICArK21faW5pdGlhbEFsbG9jOworICAgICAgICBtX2VudHJpZXNbaV0ucHRyKGNl
bGwpOworICAgICAgICArK21fZW50cmllc1NpemU7CisgICAgICAgIHJldHVybiAmbV9lbnRyaWVz
W2ldOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFdlYWtHQ0hhbmRsZVBvb2w6OmZyZWUoV2Vha0dDSGFuZGxlKiBoYW5kbGUpCit7
CisgICAgQVNTRVJUKGhhbmRsZS0+cG9vbCgpID09IHRoaXMpOworICAgIEFTU0VSVChtX2VudHJp
ZXNbMF0uaXNOZXh0KCkpOworICAgIHVuc2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLm5l
eHQoKTsKKyAgICBBU1NFUlQoZnJlZUxpc3QgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50
cmllcyk7CisgICAgaGFuZGxlLT5uZXh0KGZyZWVMaXN0KTsKKyAgICBtX2VudHJpZXNbMF0ubmV4
dChoYW5kbGUgLSBtX2VudHJpZXMpOworICAgIC0tbV9lbnRyaWVzU2l6ZTsKK30KKwordm9pZCog
V2Vha0dDSGFuZGxlUG9vbDo6b3BlcmF0b3IgbmV3KHNpemVfdCwgV1RGOjpBbGlnbmVkQmxvY2tB
bGxvY2F0b3ImIGFsbG9jYXRvcikKK3sKKyAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jKCk7Cit9
CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDApCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHQ0hhbmRsZV9oCisjZGVmaW5lIEdDSGFuZGxl
X2gKKworI2luY2x1ZGUgPHd0Zi9CbG9ja0FsbG9jYXRvci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSGVhcDsKK2NsYXNzIEpTQ2VsbDsKK2NsYXNzIFdlYWtHQ0hhbmRsZTsKK2NsYXNz
IFdlYWtHQ0hhbmRsZVBvb2w7CisKK2NsYXNzIFdlYWtHQ0hhbmRsZQoreworcHVibGljOgorICAg
IGJvb2wgaXNWYWxpZFB0cigpIHsgcmV0dXJuICEobV9wdHIgJiAzKTsgfQorICAgIGJvb2wgaXNQ
dHIoKSB7IHJldHVybiAhKG1fcHRyICYgMSk7IH0KKyAgICBib29sIGlzTmV4dCgpIHsgcmV0dXJu
IChtX3B0ciAmIDMpID09IDE7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpCisgICAgeworICAg
ICAgICBBU1NFUlQoaXNWYWxpZFB0cigpKTsKKyAgICAgICAgbV9wdHIgfD0gMjsKKyAgICB9CisK
KyAgICBKU0NlbGwqIHB0cigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNQdHIoKSk7CisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KG1fcHRyICYgfjMpOworICAgIH0K
KworICAgIHZvaWQgcHRyKEpTQ2VsbCogcCkKKyAgICB7CisgICAgICAgIG1fcHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOworICAgICAgICBBU1NFUlQoaXNQdHIoKSk7CisgICAg
fQorCisgICAgdWludHB0cl90IG5leHQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTmV4dCgp
KTsKKyAgICAgICAgcmV0dXJuIG1fcHRyID4+IDI7CisgICAgfQorCisgICAgdm9pZCBuZXh0KHVp
bnRwdHJfdCBuKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSAobiA8PCAyKSB8IDE7CisgICAgICAg
IEFTU0VSVChpc05leHQoKSk7CisgICAgfQorCisgICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCgp
OworCitwcml2YXRlOgorCisgICAgdWludHB0cl90IG1fcHRyOworfTsKKworY2xhc3MgV2Vha0dD
SGFuZGxlUG9vbAoreworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbFNpemUg
PSAweDQwMDA7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sTWFzayA9IH4ocG9vbFNpemUg
LSAxKTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVBvb2xFbnRyaWVzID0gKHBvb2xTaXpl
IC0gc2l6ZW9mKEhlYXAqKSAtIDMgKiBzaXplb2YodW5zaWduZWQpKSAvIHNpemVvZihXZWFrR0NI
YW5kbGUpOworCisgICAgV2Vha0dDSGFuZGxlUG9vbCgpOworCisgICAgV2Vha0dDSGFuZGxlKiBh
bGxvY2F0ZShKU0NlbGwqIGNlbGwpOworICAgIHZvaWQgZnJlZShXZWFrR0NIYW5kbGUqKTsKKwor
ICAgIGJvb2wgaXNGdWxsKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2VudHJpZXNTaXplIDwg
V2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworICAgICAgICByZXR1cm4gbV9lbnRy
aWVzU2l6ZSA9PSBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyAtIDE7CisgICAgfQor
CisgICAgdm9pZCB1cGRhdGUoKTsKKworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIFdU
Rjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yJik7CisKK3ByaXZhdGU6CisgICAgSGVhcCogbV9oZWFw
OworICAgIHVuc2lnbmVkIG1fZW50cmllc1NpemU7CisgICAgdW5zaWduZWQgbV9pbml0aWFsQWxs
b2M7CisKKyAgICBXZWFrR0NIYW5kbGUgbV9lbnRyaWVzW1dlYWtHQ0hhbmRsZVBvb2w6Om51bVBv
b2xFbnRyaWVzXTsKK307CisKK30KKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrR0NQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtH
Q1B0ci5oCShyZXZpc2lvbiA2NDMwNCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dD
UHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2Vha0dDUHRy
X2gKIAogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQsMjMgKzM1
LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogLy8gQSBzbWFydCBwb2ludGVyIHdob3NlIGdldCgpIGZ1
bmN0aW9uIHJldHVybnMgMCBmb3IgY2VsbHMgYXdhaXRpbmcgZGVzdHJ1Y3Rpb24uCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha0dDUHRyIDogTm9uY29weWFibGUgewogcHVibGljOgot
ICAgIFdlYWtHQ1B0cigpIDogbV9wdHIoMCkgeyB9CisgICAgV2Vha0dDUHRyKCkKKyAgICAgICAg
OiBtX3B0cigwKQorICAgIHsKKyAgICB9CisKICAgICBXZWFrR0NQdHIoVCogcHRyKSB7IGFzc2ln
bihwdHIpOyB9CiAKKyAgICB+V2Vha0dDUHRyKCkKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikK
KyAgICAgICAgICAgIG1fcHRyLT5wb29sKCktPmZyZWUobV9wdHIpOworICAgIH0KKworICAgIFQq
IHVuY2hlY2tlZEdldCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9wdHIpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fcHRyLT5wdHIoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFQqIGdldCgpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAoIW1fcHRyIHx8ICFIZWFwOjppc0NlbGxNYXJrZWQobV9wdHIpKQorICAg
ICAgICBpZiAobV9wdHIgJiYgbV9wdHItPmlzVmFsaWRQdHIoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUKj4obV9wdHItPnB0cigpKTsKKyAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX3B0cjsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBjbGVhcihKU0NlbGwqIHB0cikKKyAgICBib29sIGNsZWFyKEpTQ2VsbCogcCkKICAgICB7Ci0g
ICAgICAgIGlmIChwdHIgPT0gbV9wdHIpIHsKLSAgICAgICAgICAgIG1fcHRyID0gMDsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKCFtX3B0ciB8fCBtX3B0ci0+cHRyKCkgIT0gcCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBtX3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRyKTsKKyAgICAgICAg
bV9wdHIgPSAwOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBUJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KQEAgLTYyLDI1ICs4MywyOCBAQCBwdWJsaWM6
CiAjaWYgQ09NUElMRVIoV0lOU0NXKQogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3B0cjsgfQogI2Vsc2UKLSAgICB0eXBlZGVmIFQqIFdlYWtHQ1B0cjo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGU7CisgICAgdHlwZWRlZiBXZWFrR0NIYW5kbGUqIFdlYWtHQ1B0cjo6KlVuc3BlY2lm
aWVkQm9vbFR5cGU7CiAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGdldCgpID8gJldlYWtHQ1B0cjo6bV9wdHIgOiAwOyB9CiAjZW5kaWYKIAogICAgIFdl
YWtHQ1B0ciYgb3BlcmF0b3I9KFQqKTsKKyAgICBXZWFrR0NQdHImIG9wZXJhdG9yPShjb25zdCBX
ZWFrR0NQdHI8VD4mIG9wdHIpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgaGFz
RGVhZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KICNlbmRpZgogCiBwcml2YXRl
OgotICAgIHZvaWQgYXNzaWduKFQqIHB0cikKKyAgICB2b2lkIGFzc2lnbihKU0NlbGwqIHB0cikK
ICAgICB7CiAgICAgICAgIEFTU0VSVChwdHIpOwotICAgICAgICBIZWFwOjptYXJrQ2VsbChwdHIp
OwotICAgICAgICBtX3B0ciA9IHB0cjsKKyAgICAgICAgaWYgKG1fcHRyKQorICAgICAgICAgICAg
bV9wdHItPnB0cihwdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3B0ciA9IEhlYXA6
OmhlYXAocHRyKS0+YWRkV2Vha0dDSGFuZGxlKHB0cik7CiAgICAgfQogCi0gICAgVCogbV9wdHI7
CisgICAgV2Vha0dDSGFuZGxlKiBtX3B0cjsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgV2Vha0dDUHRyPFQ+JiBXZWFrR0NQdHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQpAQCAt
ODksNiArMTEzLDE3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0dDUHRyPFQK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vh
a0dDUHRyPFQ+JiBXZWFrR0NQdHI8VD46Om9wZXJhdG9yPShjb25zdCBXZWFrR0NQdHI8VD4mIG9w
dHIpCit7CisgICAgQVNTRVJUKG9wdHIubV9wdHIpOworICAgIGlmICghbV9wdHIpIHsKKyAgICAg
ICAgSlNDZWxsKiBwdHIgPSBvcHRyLm1fcHRyLT5wdHIoKTsKKyAgICAgICAgbV9wdHIgPSBIZWFw
OjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShwdHIpOworICAgIH0KKyAgICAqbV9wdHIgPSAq
b3B0ci5tX3B0cjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWtHQ1B0cjxUPiYg
YSwgY29uc3QgV2Vha0dDUHRyPFU+JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdl
dCgpOyAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Jsb2NrQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKKyNpbmNs
dWRlIDx3dGYvVk1UYWdzLmg+CisKKyNpZiBPUyhIQUlLVSkKKworI2luY2x1ZGUgPE9TLmg+CisK
KyNlbGlmIE9TKFVOSVgpCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvbW1h
bi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYgT1MoUU5YKQorI2luY2x1ZGUgPGZjbnRs
Lmg+CisjZW5kaWYKKworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitBbGlnbmVkQmxvY2tB
bGxvY2F0b3I6OkFsaWduZWRCbG9ja0FsbG9jYXRvcih1aW50MzJfdCBiU2l6ZSkKKyAgICA6IGJs
b2NrU2l6ZShiU2l6ZSkKK3sKK30KKworQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJs
b2NrQWxsb2NhdG9yKCkKK3sKK30KKwordm9pZCBBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmRlc3Ry
b3koKQoreworfQorCit2b2lkKiBBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmFsbG9jKCkKK3sKKyNp
ZiBIQVZFKFBPU0lYX01FTUFMSUdOKQorICAgIHZvaWQqIGFkZHJlc3M7CisgICAgcG9zaXhfbWVt
YWxpZ24oJmFkZHJlc3MsIGJsb2NrU2l6ZSwgYmxvY2tTaXplKTsKKyNlbHNlCisKKyNpZiBFTkFC
TEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCisjZXJyb3IgTmVlZCB0byBpbml0aWFsaXplIHBhZ2Vz
aXplIHNhZmVseS4KKyNlbmRpZgorICAgIHN0YXRpYyBzaXplX3QgcGFnZXNpemUgPSBnZXRwYWdl
c2l6ZSgpOworCisgICAgc2l6ZV90IGV4dHJhID0gMDsKKyAgICBpZiAoYmxvY2tTaXplID4gcGFn
ZXNpemUpCisgICAgICAgIGV4dHJhID0gYmxvY2tTaXplIC0gcGFnZXNpemU7CisKKyAgICB2b2lk
KiBtbWFwUmVzdWx0ID0gbW1hcChOVUxMLCBibG9ja1NpemUgKyBleHRyYSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworICAgIHVpbnRwdHJf
dCBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1tYXBSZXN1bHQpOworCisg
ICAgc2l6ZV90IGFkanVzdCA9IDA7CisgICAgaWYgKChhZGRyZXNzICYgKGJsb2NrU2l6ZSAtIDEp
KSAhPSAwKQorICAgICAgICBhZGp1c3QgPSBibG9ja1NpemUgLSAoYWRkcmVzcyAmIChibG9ja1Np
emUgLSAxKSk7CisKKyAgICBpZiAoYWRqdXN0ID4gMCkKKyAgICAgICAgbXVubWFwKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3MpLCBhZGp1c3QpOworCisgICAgaWYgKGFkanVzdCA8IGV4
dHJhKQorICAgICAgICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRkcmVzcyArIGFk
anVzdCArIGJsb2NrU2l6ZSksIGV4dHJhIC0gYWRqdXN0KTsKKworICAgIGFkZHJlc3MgKz0gYWRq
dXN0OworI2VuZGlmCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3Mp
OworfQorCit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZnJlZSh2b2lkKiBkYXRhKQorewor
I2lmIEhBVkUoUE9TSVhfTUVNQUxJR04pCisgICAgZnJlZShkYXRhKTsKKyNlbHNlCisgICAgbXVu
bWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLCBibG9ja1NpemUgLSAxKTsKKyNlbmRp
ZgorfQorCit9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tBbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQmxvY2tBbGxvY2F0b3IuaAkocmV2aXNpb24g
MCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9CbG9ja0FsbG9jYXRvci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKwor
I2lmbmRlZiBCbG9ja0FsbG9jYXRvcl9oCisjZGVmaW5lIEJsb2NrQWxsb2NhdG9yX2gKKworbmFt
ZXNwYWNlIFdURiB7CisKK2NsYXNzIEFsaWduZWRCbG9ja0FsbG9jYXRvciB7CitwdWJsaWM6Cisg
ICAgQWxpZ25lZEJsb2NrQWxsb2NhdG9yKHVpbnQzMl90KTsKKyAgICB+QWxpZ25lZEJsb2NrQWxs
b2NhdG9yKCk7CisgICAgdm9pZCBkZXN0cm95KCk7CisgICAgdm9pZCogYWxsb2MoKTsKKyAgICB2
b2lkIGZyZWUodm9pZCopOworCitwcml2YXRlOgorICAgIHNpemVfdCBibG9ja1NpemU7Cit9Owor
IAorfQorCisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NDMwNCkK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY4
LDYgKzEwNjgsOCBAQCBvbiBNaW5HVy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3NoCiAK
ICNkZWZpbmUgRU5BQkxFX0pTQ19aT01CSUVTIDAKIAorI2RlZmluZSBFTkFCTEVfTU9WQUJMRV9H
Q19PQkpFQ1RTIDEKKwogLyogRklYTUU6IEV2ZW50dWFsbHkgd2Ugc2hvdWxkIGVuYWJsZSB0aGlz
IGZvciBhbGwgcGxhdGZvcm1zIGFuZCBnZXQgcmlkIG9mIHRoZSBkZWZpbmUuICovCiAjaWYgUExB
VEZPUk0oTUFDKQogI2RlZmluZSBXVEZfVVNFX1BMQVRGT1JNX1NUUkFURUdJRVMgMQpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL21hYy9CbG9ja0FsbG9jYXRvck1hYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL21hYy9CbG9ja0FsbG9jYXRvck1hYy5jcHAJKHJldmlzaW9u
IDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvbWFjL0Jsb2NrQWxsb2NhdG9yTWFjLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5o
IgorI2luY2x1ZGUgPHd0Zi9WTVRhZ3MuaD4KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+
CisjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0FsaWduZWRC
bG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxsb2NhdG9yKHVpbnQzMl90IGJTaXplKQorICAg
IDogYmxvY2tTaXplKGJTaXplKQoreworfQorCitBbGlnbmVkQmxvY2tBbGxvY2F0b3I6On5BbGln
bmVkQmxvY2tBbGxvY2F0b3IoKQoreworfQorCit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6
ZGVzdHJveSgpCit7Cit9CisKK3ZvaWQqIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MoKQor
eworICAgIHZtX2FkZHJlc3NfdCBhZGRyZXNzID0gMDsKKyAgICB2bV9tYXAoY3VycmVudF90YXNr
KCksICZhZGRyZXNzLCBibG9ja1NpemUsIChibG9ja1NpemUgLSAxKSwgVk1fRkxBR1NfQU5ZV0hF
UkUgfCBWTV9UQUdfRk9SX0NPTExFQ1RPUl9NRU1PUlksIE1FTU9SWV9PQkpFQ1RfTlVMTCwgMCwg
RkFMU0UsIFZNX1BST1RfREVGQVVMVCwgVk1fUFJPVF9ERUZBVUxULCBWTV9JTkhFUklUX0RFRkFV
TFQpOworCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpOworfQor
Cit2b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZnJlZSh2b2lkKiBkYXRhKQoreworICAgIHZt
X2RlYWxsb2NhdGUoY3VycmVudF90YXNrKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190
PihkYXRhKSwgYmxvY2tTaXplIC0gMSk7Cit9CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0
Zi93aW4vQmxvY2tBbGxvY2F0b3JXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi93aW4vQmxvY2tBbGxvY2F0b3JXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL3dpbi9CbG9ja0FsbG9jYXRvcldpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
Vk1UYWdzLmg+CisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCitBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OkFsaWduZWRCbG9ja0Fs
bG9jYXRvcih1aW50MzJfdCBiU2l6ZSkKKyAgICA6IGJsb2NrU2l6ZShiU2l6ZSkKK3sKK30KKwor
QWxpZ25lZEJsb2NrQWxsb2NhdG9yOjp+QWxpZ25lZEJsb2NrQWxsb2NhdG9yKCkKK3sKK30KKwor
dm9pZCBBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmRlc3Ryb3koKQoreworfQorCit2b2lkKiBBbGln
bmVkQmxvY2tBbGxvY2F0b3I6OmFsbG9jKCkKK3sKKyNpZiBDT01QSUxFUihNSU5HVykgJiYgIUNP
TVBJTEVSKE1JTkdXNjQpCisgICAgdm9pZCogYWRkcmVzcyA9IF9fbWluZ3dfYWxpZ25lZF9tYWxs
b2MoYmxvY2tTaXplLCBibG9ja1NpemUpOworI2Vsc2UKKyAgICB2b2lkKiBhZGRyZXNzID0gX2Fs
aWduZWRfbWFsbG9jKGJsb2NrU2l6ZSwgYmxvY2tTaXplKTsKKyNlbmRpZgorICAgIG1lbXNldChh
ZGRyZXNzLCAwLCBibG9ja1NpemUpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihhZGRyZXNzKTsKK30KKwordm9pZCBBbGlnbmVkQmxvY2tBbGxvY2F0b3I6OmZyZWUodm9pZCog
ZGF0YSkKK3sKKyNpZiBDT01QSUxFUihNSU5HVykgJiYgIUNPTVBJTEVSKE1JTkdXNjQpCisgICAg
X19taW5nd19hbGlnbmVkX2ZyZWUoZGF0YSk7CisjZWxzZQorICAgIF9hbGlnbmVkX2ZyZWUoZGF0
YSk7CisjZW5kaWYKK30KKworfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL0Jsb2Nr
QWxsb2NhdG9yV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi93aW5j
ZS9CbG9ja0FsbG9jYXRvcldpbkNFLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi93aW5jZS9CbG9ja0FsbG9jYXRvcldpbkNFLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9W
TVRhZ3MuaD4KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK0FsaWduZWRCbG9ja0FsbG9jYXRvcjo6QWxpZ25lZEJsb2NrQWxs
b2NhdG9yKHVpbnQzMl90IGJTaXplKQorICAgIDogYmxvY2tTaXplKGJTaXplKQoreworfQorCitB
bGlnbmVkQmxvY2tBbGxvY2F0b3I6On5BbGlnbmVkQmxvY2tBbGxvY2F0b3IoKQoreworfQorCit2
b2lkIEFsaWduZWRCbG9ja0FsbG9jYXRvcjo6ZGVzdHJveSgpCit7Cit9CisKK3ZvaWQqIEFsaWdu
ZWRCbG9ja0FsbG9jYXRvcjo6YWxsb2MoKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSBWaXJ0dWFs
QWxsb2MoTlVMTCwgYmxvY2tTaXplLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBBR0VfUkVB
RFdSSVRFKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcyk7Cit9
CisKK3ZvaWQgQWxpZ25lZEJsb2NrQWxsb2NhdG9yOjpmcmVlKHZvaWQqIGRhdGEpCit7CisgICAg
VmlydHVhbEZyZWUoZGF0YSwgMCwgTUVNX1JFTEVBU0UpOworfQorCit9Cg==
</data>
<flag name="review"
          id="51263"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63491</attachid>
            <date>2010-08-04 14:15:31 -0700</date>
            <delta_ts>2010-08-04 14:53:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>24013</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2NyaXB0Q29yZS9BbmRy
b2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6
PSBcCiAJcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBcCiAJcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAorCXJ1bnRpbWUvR0NI
YW5kbGUuY3BwIFwKIAlydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogCXJ1bnRpbWUvR2xvYmFs
RXZhbEZ1bmN0aW9uLmNwcCBcCiAJcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCkBAIC0xNTQsNiAr
MTU1LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAlydW50aW1lL1VTdHJpbmcuY3BwIFwKIAlc
CiAJd3RmL0Fzc2VydGlvbnMuY3BwIFwKKwl3dGYvQmxvY2tBbGxvY2F0b3IuY3BwIFwKIAl3dGYv
Qnl0ZUFycmF5LmNwcCBcCiAJd3RmL0N1cnJlbnRUaW1lLmNwcCBcCiAJd3RmL0RhdGVNYXRoLmNw
cCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9SZWdleEludGVycHJldGVyLmNw
cAogICAgIHlhcnIvUmVnZXhKSVQuY3BwCiAKKyAgICB3dGYvQmxvY2tBbGxvY2F0b3IuY3BwCiAg
ICAgd3RmL0RhdGVNYXRoLmNwcAogICAgIHd0Zi9QYWdlQWxsb2NhdGlvbi5jcHAKICkKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NDY3NikKKysrIEphdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDcgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNhZmVTaGFyZWQuaCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmggXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBl
ZFBhZ2VBbGxvY2F0aW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmNwcCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3JEZWZhdWx0LmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA2NDY3NikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIF9fWk4zSlNDMTJTdHJpbmdP
YmplY3QyNGdldE93blByb3BlcnR5RGUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QzcHV0RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Q0aW5mb0UKIF9fWk4zSlNDMTJTdHJpbmdPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVy
ZUVFRVJLTlNfN1VTdHJpbmdFCitfX1pOM0pTQzEyV2Vha0dDSGFuZGxlNHBvb2xFdgogX19aTjNK
U0MxMmpzTnVtYmVyQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVkCiBfX1pOM0pTQzEybm9uSW5saW5lTmFO
RXYKIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzNHN0b3BFdgpAQCAtMTcxLDYgKzE3Miw3IEBAIF9f
Wk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG8KIF9fWk4zSlNDMTZKU1Zhcmlh
YmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRzeW1ib2xUYWJsZUdldEVSS05TXzEwSWRl
bnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9i
amVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5h
bWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDMTZXZWFrR0NIYW5kbGVQb29s
NGZyZWVFUE5TXzEyV2Vha0dDSGFuZGxlRQogX19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJyb3JFUE5T
XzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTZ0aHJvd1N5bnRheEVycm9yRVBO
U185RXhlY1N0YXRlRQogX19aTjNKU0MxNnRvVUludDMyU2xvd0Nhc2VFZFJiCkBAIC0yMDEsNiAr
MjAzLDcgQEAgX19aTjNKU0MyNWV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWVFUktOUwogX19aTjNK
U0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFsRGF0
YUUKIF9fWk4zSlNDM05hTkUKIF9fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKK19fWk4z
SlNDNEhlYXAxNWFkZFdlYWtHQ0hhbmRsZUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDNEhlYXAxNXJl
Y29yZEV4dHJhQ29zdEVtCiBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBlQ291bnRzRXYKIF9fWk4z
SlNDNEhlYXAxNnByaW1hcnlIZWFwQmVnaW5FdgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5neXBpCShyZXZpc2lvbiA2NDY3NikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw2ICs0MzgsNyBAQAogICAgICAgICAgICAgJ3d0
Zi9UaHJlYWRTYWZlU2hhcmVkLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTcGVjaWZpYy5o
JywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwJywKKyAgICAgICAgICAg
ICd3dGYvVHlwZWRQYWdlQWxsb2NhdGlvbi5oJywKICAgICAgICAgICAgICd3dGYvVHlwZVRyYWl0
cy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9UeXBlVHJhaXRzLmgnLAogICAgICAgICAgICAgJ3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAnLApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bwkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50
aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCiAgICAgcnVudGltZS9VU3RyaW5nLmNwcCBcCiAgICAg
d3RmL0Fzc2VydGlvbnMuY3BwIFwKKyAgICB3dGYvQmxvY2tBbGxvY2F0b3IuY3BwIFwKICAgICB3
dGYvQnl0ZUFycmF5LmNwcCBcCiAgICAgd3RmL0N1cnJlbnRUaW1lLmNwcCBcCiAgICAgd3RmL0Rh
dGVNYXRoLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0Njc2KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTExLDYgKzUxMSwxMiBAQAogCQlERDI3MjQ2ODEyMDhEMUZGMDBGOUFC
RTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCAqLzsgfTsKIAkJREQyNzI0NjkxMjA4RDFGRjAwRjlBQkU3IC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJREQzNzdDQkMxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQzNzdDQkIxMjA3MkMxODAwNkEyNTE3IC8q
IEJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3
NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OworCQlEREU4MkFENDEyMDlEOTU1MDA1QzE3NTYgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJRERF
ODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBH
Q0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJB
RDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi87IH07CisJCURERTgyQUQ3MTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3Bw
ICovOyB9OworCQlEREU4MkFEODEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUw
MDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
RjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgfTsKIAkJ
RERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERjdBQkQzMTFGNjBF
RDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3
MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9w
YXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwNTYsNiArMTA2Miw4IEBACiAJCUQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAv
KiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQyNzI0NjcxMjA4
RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERDM3N0NCQjEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdG1hcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NIYW5kbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NIYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0
aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0FjdGl2
aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERGN0FCRDMxMUY2
MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTExRDUxNzUwQjJFNzk4RDAwNTZDMTg4IC8qIFN0cmluZ0V4
dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdFeHRyYXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjEsNiArMTYyOSw4IEBACiAJCQkJQkMy
NjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQlG
NjkyQTg1QzAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAogCQkJ
CUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAorCQkJ
CURERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi8sCisJCQkJRERFODJB
RDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi8sCiAJCQkJQkMwMkU5QjgwRTE4NDU0
NTAwMEY5Mjk3IC8qIEdldHRlclNldHRlci5jcHAgKi8sCiAJCQkJQkMzMzdCREUwRTFBRjBCODAw
NzY5MThBIC8qIEdldHRlclNldHRlci5oICovLAogCQkJCUJDMjU3REVEMEUxRjUyRUQwMDE2QjZD
OSAvKiBHbG9iYWxFdmFsRnVuY3Rpb24uY3BwICovLApAQCAtMTkwOSw2ICsxOTE5LDcgQEAKIAkJ
CQkxNDQwMDVDQzBBNTMzOEY4MDAwNUYwNjEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ0MDA3NEEwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlERDI3MjQ2ODEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRERFODJBRDYxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTIyMTAsNiArMjIyMSw3IEBACiAJCQkJOTY4OENCMTYwRUQxMkI0
RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERGN0FCRDQx
MUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJREQyNzI0NjkxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMzAzLDcgKzIzMTUsNiBAQAogCQkJaXNhID0gUEJYUHJvamVj
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjc3MTA4OTAyQUZFMDA4QTlFRkMg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJKYXZhU2NyaXB0Q29y
ZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxv
cG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJ
CQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTI0NzEsNiArMjQ4Miw3IEBACiAJ
CQkJMTQxMjExMzQwQTQ4Nzk1ODAwNDgwMjU1IC8qIG1pbmlkb20uYyBpbiBTb3VyY2VzICovLAog
CQkJCTE0NDAwNjNGMEE1MzU5OEEwMDA1RjA2MSAvKiBOb2RlLmMgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQwMDc0QjBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3QuYyBpbiBTb3VyY2VzICovLAor
CQkJCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI0NzksNiArMjQ5MSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwogCQkJZmlsZXMgPSAoCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGku
YyBpbiBTb3VyY2VzICovLAorCQkJCURERTgyQUQ0MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NTgsNiArMjY3MSw3IEBACiAJCQkJODZEMDhENTMx
MTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2MjdFNUVCMTFGMTI4MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2NhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyogR0NI
YW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjY2LDYgKzI2ODAsNyBAQAogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkREMDgyMkEx
QzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJBRDMxMjA5RDk1
NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsOSBA
QCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogCiAgICAgZnJlZUJsb2NrcygpOwogCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fd2Vha0dDSGFuZGxlUG9vbHNbaV0uZGVhbGxvY2F0ZSgpOworCiAjaWYgRU5BQkxFKEpT
Q19NVUxUSVBMRV9USFJFQURTKQogICAgIGlmIChtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIpIHsK
ICAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKG1fY3VycmVudFRocmVhZFJl
Z2lzdHJhcik7CkBAIC05MTAsNiArOTEzLDM4IEBAIHZvaWQgSGVhcDo6bWFya1N0YWNrT2JqZWN0
c0NvbnNlcnZhdGl2ZWwKICNlbmRpZgogfQogCit2b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRs
ZXMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xz
LnNpemUoKTsgKytpKQorICAgICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsKK30K
Kwordm9pZCBXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUoKQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7CisgICAg
ICAgIGlmIChtX2VudHJpZXNbaV0uaXNWYWxpZFB0cigpKSB7CisgICAgICAgICAgICBKU0NlbGwq
IGNlbGwgPSBtX2VudHJpZXNbaV0ucHRyKCk7CisgICAgICAgICAgICBpZiAoIWNlbGwgfHwgIUhl
YXA6OmlzQ2VsbE1hcmtlZChjZWxsKSkKKyAgICAgICAgICAgICAgICBtX2VudHJpZXNbaV0uaW52
YWxpZGF0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitXZWFrR0NIYW5kbGUqIEhlYXA6OmFk
ZFdlYWtHQ0hhbmRsZShKU0NlbGwqIHB0cikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYgKCF3ZWFrR0NI
YW5kbGVQb29sKGkpLT5pc0Z1bGwoKSkKKyAgICAgICAgICAgIHJldHVybiB3ZWFrR0NIYW5kbGVQ
b29sKGkpLT5hbGxvY2F0ZShwdHIpOworCisgICAgQVNTRVJUKFdlYWtHQ0hhbmRsZVBvb2w6OnBv
b2xTaXplID09IEJMT0NLX1NJWkUpOworCisgICAgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQ
b29sOjpwb29sU2l6ZT4gYWxsb2NhdGlvbiA9IG1fYmxvY2thbGxvY2F0b3IuYWxsb2NhdGUoKTsK
KyAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzLmFwcGVuZChhbGxvY2F0aW9uKTsKKworICAgIFdlYWtH
Q0hhbmRsZVBvb2wqIHBvb2wgPSBuZXcgKGFsbG9jYXRpb24pIFdlYWtHQ0hhbmRsZVBvb2woKTsK
KyAgICByZXR1cm4gcG9vbC0+YWxsb2NhdGUocHRyKTsKK30KKwogdm9pZCBIZWFwOjpwcm90ZWN0
KEpTVmFsdWUgaykKIHsKICAgICBBU1NFUlQoayk7CkBAIC0xMDQ2LDYgKzEwODEsOCBAQCB2b2lk
IEhlYXA6Om1hcmtSb290cygpCiAgICAgbWFya1N0YWNrLmRyYWluKCk7CiAgICAgbWFya1N0YWNr
LmNvbXBhY3QoKTsKIAorICAgIHVwZGF0ZVdlYWtHQ0hhbmRsZXMoKTsKKwogICAgIG1faGVhcC5v
cGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5l
IENvbGxlY3Rvcl9oCiAKICNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisjaW5j
bHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CkBAIC0xMzEsNiArMTMyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2VsbE1hcmtlZChjb25zdCBKU0NlbGwqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgbWFya0NlbGwoSlNDZWxsKik7CiAKKyAgICAgICAgV2Vha0dD
SGFuZGxlKiBhZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7CisKICAgICAgICAgdm9pZCBtYXJrQ29u
c2VydmF0aXZlbHkoTWFya1N0YWNrJiwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKICAgICAg
ICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgpIHsgaWYgKCFt
X21hcmtMaXN0U2V0KSBtX21hcmtMaXN0U2V0ID0gbmV3IEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPjsgcmV0dXJuICptX21hcmtMaXN0U2V0OyB9CkBAIC0xNzIsMTEgKzE3NSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVs
eShNYXJrU3RhY2smLCBUaHJlYWQqKTsKICAgICAgICAgdm9pZCBtYXJrU3RhY2tPYmplY3RzQ29u
c2VydmF0aXZlbHkoTWFya1N0YWNrJik7CiAKKyAgICAgICAgdm9pZCB1cGRhdGVXZWFrR0NIYW5k
bGVzKCk7CisgICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdlYWtHQ0hhbmRsZVBvb2woc2l6ZV90
IGluZGV4KTsKKwogICAgICAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+IFByb3Rl
Y3RDb3VudFNldDsKIAogICAgICAgICBDb2xsZWN0b3JIZWFwIG1faGVhcDsKIAogICAgICAgICBQ
cm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CisgICAgICAgIFdURjo6VmVjdG9yPEFs
aWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+ID4gbV93ZWFrR0NIYW5kbGVQ
b29sczsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFya0xp
c3RTZXQ7CiAKQEAgLTMwMiw2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1f
aGVhcC5uZXh0TnVtYmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdCkgKyAoQ0VMTF9TSVpF
IC8gMik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisKKyAgICBpbmxpbmUgV2Vh
a0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFuZGxlUG9vbChzaXplX3QgaW5kZXgpCisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vha0dD
SGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7CisgICAgfQogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvKiBDb2xsZWN0b3JfaCAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0hhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRs
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHQ0hhbmRsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworV2Vh
a0dDSGFuZGxlUG9vbCogV2Vha0dDSGFuZGxlOjpwb29sKCkKK3sKKyAgICB1aW50cHRyX3QgcG9v
bCA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgJiBXZWFrR0NIYW5kbGVQb29s
Ojpwb29sTWFzayk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0dDSGFuZGxlUG9v
bCo+KHBvb2wpOworfQorCitXZWFrR0NIYW5kbGVQb29sOjpXZWFrR0NIYW5kbGVQb29sKCkKK3sK
KyAgICBBU1NFUlQoc2l6ZW9mKFdlYWtHQ0hhbmRsZVBvb2wpIDw9IFdlYWtHQ0hhbmRsZVBvb2w6
OnBvb2xTaXplKTsKKyAgICBtX2VudHJpZXNTaXplID0gMDsKKyAgICBtX2luaXRpYWxBbGxvYyA9
IDE7CisgICAgbV9lbnRyaWVzWzBdLm5leHQoMCk7Cit9CisKK1dlYWtHQ0hhbmRsZSogV2Vha0dD
SGFuZGxlUG9vbDo6YWxsb2NhdGUoSlNDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVChjZWxsKTsK
KyAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKKyAgICB1bnNpZ25lZCBmcmVlTGlz
dCA9IG1fZW50cmllc1swXS5uZXh0KCk7CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFu
ZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworICAgIEFTU0VSVChtX2VudHJpZXNTaXplIDwgV2Vh
a0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworCisgICAgaWYgKG1fZW50cmllc1NpemUg
PT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGlmIChmcmVlTGlzdCkgeworICAgICAgICB1bnNpZ25lZCBpID0gZnJlZUxpc3Q7
CisgICAgICAgIGZyZWVMaXN0ID0gbV9lbnRyaWVzW2ldLm5leHQoKTsKKyAgICAgICAgbV9lbnRy
aWVzW2ldLnB0cihjZWxsKTsKKyAgICAgICAgbV9lbnRyaWVzWzBdLm5leHQoZnJlZUxpc3QpOwor
ICAgICAgICArK21fZW50cmllc1NpemU7CisgICAgICAgIHJldHVybiAmbV9lbnRyaWVzW2ldOwor
ICAgIH0gZWxzZSBpZiAobV9pbml0aWFsQWxsb2MgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29s
RW50cmllcykgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9pbml0aWFsQWxsb2M7CisgICAgICAg
ICsrbV9pbml0aWFsQWxsb2M7CisgICAgICAgIG1fZW50cmllc1tpXS5wdHIoY2VsbCk7CisgICAg
ICAgICsrbV9lbnRyaWVzU2l6ZTsKKyAgICAgICAgcmV0dXJuICZtX2VudHJpZXNbaV07CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
V2Vha0dDSGFuZGxlUG9vbDo6ZnJlZShXZWFrR0NIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBBU1NF
UlQoaGFuZGxlLT5wb29sKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1fZW50cmllc1swXS5pc05l
eHQoKSk7CisgICAgdW5zaWduZWQgZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0ubmV4dCgpOworICAg
IEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKKyAg
ICBoYW5kbGUtPm5leHQoZnJlZUxpc3QpOworICAgIG1fZW50cmllc1swXS5uZXh0KGhhbmRsZSAt
IG1fZW50cmllcyk7CisgICAgLS1tX2VudHJpZXNTaXplOworfQorCit2b2lkKiBXZWFrR0NIYW5k
bGVQb29sOjpvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGlnbmVkTWVtb3J5PFdlYWtHQ0hhbmRsZVBv
b2w6OnBvb2xTaXplPiYgYWxsb2NhdGlvbikKK3sKKyAgICByZXR1cm4gYWxsb2NhdGlvbi5iYXNl
KCk7Cit9CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDAp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHQ0hhbmRsZV9oCisjZGVmaW5lIEdD
SGFuZGxlX2gKKworI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7CitjbGFzcyBKU0NlbGw7CitjbGFzcyBXZWFrR0NIYW5k
bGU7CitjbGFzcyBXZWFrR0NIYW5kbGVQb29sOworCitjbGFzcyBXZWFrR0NIYW5kbGUKK3sKK3B1
YmxpYzoKKyAgICAvLyBCZWNhdXNlIEpTQ2VsbCBvYmplY3RzIGFyZSBhbGlnbmVkLCB3ZSBjYW4g
dXNlIHRoZSBsb3dlciB0d28gYml0cyBhcworICAgIC8vIHN0YXR1cyBmbGFncy4gVGhlIGxlYXN0
IHNpZ25pZmljYW50IGJpdCBpcyBzZXQgd2hlbiB0aGUgaGFuZGxlIGlzIG5vdCBhCisgICAgLy8g
cG9pbnRlciwgaS5lLiB3aGVuIGl0J3MgdXNlZCBhcyBhIG9mZnNldCBmb3IgdGhlIGZyZWUgbGlz
dCBpbgorICAgIC8vIFdlYWtHQ0hhbmRsZVBvb2wuIFRoZSBzZWNvbmQgbGVhc3Qgc2lnbmlmaWNh
bnQgYml0IGlzIHNldCB3aGVuIHRoZSBvYmplY3QKKyAgICAvLyB0aGUgcG9pbnRlciBjb3JyZXNw
b25kcyB0byBoYXMgYmVlbiBkZWxldGVkIGJ5IGEgZ2FyYmFnZSBjb2xsZWN0aW9uCisKKyAgICBi
b29sIGlzVmFsaWRQdHIoKSB7IHJldHVybiAhKG1fcHRyICYgMyk7IH0KKyAgICBib29sIGlzUHRy
KCkgeyByZXR1cm4gIShtX3B0ciAmIDEpOyB9CisgICAgYm9vbCBpc05leHQoKSB7IHJldHVybiAo
bV9wdHIgJiAzKSA9PSAxOyB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzVmFsaWRQdHIoKSk7CisgICAgICAgIG1fcHRyIHw9IDI7CisgICAgfQorCisg
ICAgSlNDZWxsKiBwdHIoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzUHRyKCkpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX3B0ciAmIH4zKTsKKyAgICB9CisK
KyAgICB2b2lkIHB0cihKU0NlbGwqIHApCisgICAgeworICAgICAgICBtX3B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihwKTsKKyAgICAgICAgQVNTRVJUKGlzUHRyKCkpOworICAgIH0K
KworICAgIHVpbnRwdHJfdCBuZXh0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05leHQoKSk7
CisgICAgICAgIHJldHVybiBtX3B0ciA+PiAyOworICAgIH0KKworICAgIHZvaWQgbmV4dCh1aW50
cHRyX3QgbikKKyAgICB7CisgICAgICAgIG1fcHRyID0gKG4gPDwgMikgfCAxOworICAgICAgICBB
U1NFUlQoaXNOZXh0KCkpOworICAgIH0KKworICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHBvb2woKTsK
KworcHJpdmF0ZToKKworICAgIHVpbnRwdHJfdCBtX3B0cjsKK307CisKK2NsYXNzIFdlYWtHQ0hh
bmRsZVBvb2wKK3sKK3B1YmxpYzoKKyNpZiBPUyhXSU5DRSkgfHwgT1MoU1lNQklBTikKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xTaXplID0gNjQgKiAxMDI0OyAvLyA2NGsKKyNlbHNlCisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sU2l6ZSA9IDI1NiAqIDEwMjQ7IC8vIDI1NmsKKyNl
bmRpZgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+KHBvb2xTaXplIC0gMSk7
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9IChwb29sU2l6ZSAtIHNp
emVvZihIZWFwKikgLSAzICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXplb2YoV2Vha0dDSGFuZGxl
KTsKKworICAgIFdlYWtHQ0hhbmRsZVBvb2woKTsKKworICAgIFdlYWtHQ0hhbmRsZSogYWxsb2Nh
dGUoSlNDZWxsKiBjZWxsKTsKKyAgICB2b2lkIGZyZWUoV2Vha0dDSGFuZGxlKik7CisKKyAgICBi
b29sIGlzRnVsbCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9lbnRyaWVzU2l6ZSA8IFdlYWtH
Q0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1Np
emUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxOworICAgIH0KKworICAg
IHZvaWQgdXBkYXRlKCk7CisKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGlnbmVk
TWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplPiYpOworCitwcml2YXRlOgorICAgIEhl
YXAqIG1faGVhcDsKKyAgICB1bnNpZ25lZCBtX2VudHJpZXNTaXplOworICAgIHVuc2lnbmVkIG1f
aW5pdGlhbEFsbG9jOworCisgICAgV2Vha0dDSGFuZGxlIG1fZW50cmllc1tXZWFrR0NIYW5kbGVQ
b29sOjpudW1Qb29sRW50cmllc107Cit9OworCit9CisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NQdHIuaAkocmV2aXNpb24gNjQ2NzYpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtHQ1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IFdlYWtHQ1B0cl9oCiAKICNpbmNsdWRlICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJHQ0hhbmRs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTM0LDIzICszNSw0MyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIEEgc21hcnQgcG9pbnRlciB3aG9z
ZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0aW9u
LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWtHQ1B0ciA6IE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKLSAgICBXZWFrR0NQdHIoKSA6IG1fcHRyKDApIHsgfQorICAgIFdlYWtHQ1B0cigp
CisgICAgICAgIDogbV9wdHIoMCkKKyAgICB7CisgICAgfQorCiAgICAgV2Vha0dDUHRyKFQqIHB0
cikgeyBhc3NpZ24ocHRyKTsgfQogCisgICAgfldlYWtHQ1B0cigpCisgICAgeworICAgICAgICBp
ZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRyKTsKKyAgICB9
CisKKyAgICBUKiB1bmNoZWNrZWRHZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcHRy
KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3B0ci0+cHRyKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBUKiBnZXQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3B0ciB8fCAhSGVhcDo6aXNDZWxsTWFya2VkKG1f
cHRyKSkKKyAgICAgICAgaWYgKG1fcHRyICYmIG1fcHRyLT5pc1ZhbGlkUHRyKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fcHRyLT5wdHIoKSk7CisgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gbV9wdHI7CiAgICAgfQogICAg
IAotICAgIGJvb2wgY2xlYXIoSlNDZWxsKiBwdHIpCisgICAgYm9vbCBjbGVhcihKU0NlbGwqIHAp
CiAgICAgewotICAgICAgICBpZiAocHRyID09IG1fcHRyKSB7Ci0gICAgICAgICAgICBtX3B0ciA9
IDA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghbV9wdHIgfHwgbV9wdHItPnB0cigpICE9IHApCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZShtX3B0cik7
CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CkBAIC02MiwyNSArODMsMjgg
QEAgcHVibGljOgogI2lmIENPTVBJTEVSKFdJTlNDVykKICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KICNlbHNlCi0gICAgdHlwZWRlZiBUKiBXZWFrR0NQdHI6OipV
bnNwZWNpZmllZEJvb2xUeXBlOworICAgIHR5cGVkZWYgV2Vha0dDSGFuZGxlKiBXZWFrR0NQdHI6
OipVbnNwZWNpZmllZEJvb2xUeXBlOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUo
KSBjb25zdCB7IHJldHVybiBnZXQoKSA/ICZXZWFrR0NQdHI6Om1fcHRyIDogMDsgfQogI2VuZGlm
CiAKICAgICBXZWFrR0NQdHImIG9wZXJhdG9yPShUKik7CisgICAgV2Vha0dDUHRyJiBvcGVyYXRv
cj0oY29uc3QgV2Vha0dDUHRyPFQ+JiBvcHRyKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBib29sIGhhc0RlYWRPYmplY3QoKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbihUKiBwdHIpCisgICAgdm9pZCBhc3NpZ24oSlND
ZWxsKiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQocHRyKTsKLSAgICAgICAgSGVhcDo6bWFy
a0NlbGwocHRyKTsKLSAgICAgICAgbV9wdHIgPSBwdHI7CisgICAgICAgIGlmIChtX3B0cikKKyAg
ICAgICAgICAgIG1fcHRyLT5wdHIocHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9w
dHIgPSBIZWFwOjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShwdHIpOwogICAgIH0KIAotICAg
IFQqIG1fcHRyOworICAgIFdlYWtHQ0hhbmRsZSogbV9wdHI7CiB9OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dDUHRyPFQ+OjpvcGVyYXRvcj0oVCog
b3B0cikKQEAgLTg5LDYgKzExMywxNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdl
YWtHQ1B0cjxUCiAgICAgcmV0dXJuICp0aGlzOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
aW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dDUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgV2Vha0dD
UHRyPFQ+JiBvcHRyKQoreworICAgIEFTU0VSVChvcHRyLm1fcHRyKTsKKyAgICBpZiAoIW1fcHRy
KSB7CisgICAgICAgIEpTQ2VsbCogcHRyID0gb3B0ci5tX3B0ci0+cHRyKCk7CisgICAgICAgIG1f
cHRyID0gSGVhcDo6aGVhcChwdHIpLT5hZGRXZWFrR0NIYW5kbGUocHRyKTsKKyAgICB9CisgICAg
Km1fcHRyID0gKm9wdHIubV9wdHI7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFr
R0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63495</attachid>
            <date>2010-08-04 14:53:23 -0700</date>
            <delta_ts>2010-08-04 16:22:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>21922</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjQ2ODApCisrKyBKYXZhU2NyaXB0Q29yZS9BbmRy
b2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6
PSBcCiAJcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBcCiAJcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAorCXJ1bnRpbWUvR0NI
YW5kbGUuY3BwIFwKIAlydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogCXJ1bnRpbWUvR2xvYmFs
RXZhbEZ1bmN0aW9uLmNwcCBcCiAJcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA2NDY4MCkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIF9f
Wk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGUKIF9fWk4zSlNDMTJTdHJpbmdP
YmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJO
U18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Q0aW5mb0UKIF9fWk4z
SlNDMTJTdHJpbmdPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQ
dHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN1VTdHJpbmdFCitfX1pOM0pTQzEyV2Vha0dDSGFuZGxl
NHBvb2xFdgogX19aTjNKU0MxMmpzTnVtYmVyQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVkCiBfX1pOM0pT
QzEybm9uSW5saW5lTmFORXYKIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzNHN0b3BFdgpAQCAtMTcx
LDYgKzE3Miw3IEBAIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG8KIF9f
Wk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRzeW1ib2xUYWJs
ZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pT
QzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVS
TlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKK19fWk4zSlNDMTZX
ZWFrR0NIYW5kbGVQb29sNGZyZWVFUE5TXzEyV2Vha0dDSGFuZGxlRQogX19aTjNKU0MxNmNyZWF0
ZVJhbmdlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTZ0aHJv
d1N5bnRheEVycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNnRvVUludDMyU2xvd0Nhc2VF
ZFJiCkBAIC0yMDEsNiArMjAzLDcgQEAgX19aTjNKU0MyNWV2YWx1YXRlSW5HbG9iYWxDYWxsRnJh
bWVFUktOUwogX19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBO
U18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDM05hTkUKIF9fWk4zSlNDNEhlYXAxNHByaW1hcnlI
ZWFwRW5kRXYKK19fWk4zSlNDNEhlYXAxNWFkZFdlYWtHQ0hhbmRsZUVQTlNfNkpTQ2VsbEUKIF9f
Wk4zSlNDNEhlYXAxNXJlY29yZEV4dHJhQ29zdEVtCiBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBl
Q291bnRzRXYKIF9fWk4zSlNDNEhlYXAxNnByaW1hcnlIZWFwQmVnaW5FdgpJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA2NDY4MCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMSw2ICs1MTEs
MTIgQEAKIAkJREQyNzI0NjgxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMjcy
NDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07CiAJ
CUREMjcyNDY5MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEyMDhE
MUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUREMzc3Q0JDMTIwNzJDMTgwMDZBMjUx
NyAvKiBCaXRtYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEREMzc3Q0JCMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEREU4MkFEMzEyMDlEOTU1MDA1QzE3
NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsK
KwkJRERFODJBRDQxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1
NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAvKiBH
Q0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OworCQlEREU4
MkFENjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5oICovOyB9OworCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDEx
MjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJRERFODJBRDgxMjA5RDk1
NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEREY3QUJENDEx
RjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREY3QUJEMjExRjYwRUQyMDAxMDhFMzYgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IH07CiAJCURERjdBQkQ1MTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwICovOyB9OwogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVl
SlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDU2LDYgKzEwNjIsOCBA
QAogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQzNzdDQkIx
MjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCaXRtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRERFODJBRDExMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdDSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRERF
ODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdDSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURE
RjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2tDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0Fj
dGl2aXR5Q2FsbGJhY2tDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMUQ1
MTc1MEIyRTc5OEQwMDU2QzE4OCAvKiBTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjIxLDYgKzE2MjksOCBAQAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBG
dW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcg
LyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYg
LyogR0NIYW5kbGUuY3BwICovLAorCQkJCURERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5oICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIu
Y3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAq
LywKIAkJCQlCQzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNw
cCAqLywKQEAgLTE5MDksNiArMTkxOSw3IEBACiAJCQkJMTQ0MDA1Q0MwQTUzMzhGODAwMDVGMDYx
IC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAwNzRBMEE1MzZDQzIwMDA1RjA2MSAv
KiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQyNzI0NjgxMjA4RDFGRjAwRjlBQkU3
IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURERTgyQUQ2
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjEwLDYg
KzIyMjEsNyBAQAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUREMjcyNDY5MTIwOEQxRkYwMEY5QUJF
NyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlEREU4MkFE
ODEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjMwMyw3
ICsyMzE1LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZl
cnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJ
CWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVu
Z2xpc2gsCkBAIC0yNDcxLDYgKzI0ODIsNyBAQAogCQkJCTE0MTIxMTM0MEE0ODc5NTgwMDQ4MDI1
NSAvKiBtaW5pZG9tLmMgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwMDYzRjBBNTM1OThBMDAwNUYw
NjEgLyogTm9kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA3NEIwQTUzNkNDMjAwMDVGMDYx
IC8qIE5vZGVMaXN0LmMgaW4gU291cmNlcyAqLywKKwkJCQlEREU4MkFENTEyMDlEOTU1MDA1QzE3
NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNDc5LDYgKzI0OTEsNyBAQAog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTE0NDBG
NjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQlEREU4
MkFENDEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
NjU4LDYgKzI2NzEsNyBAQAogCQkJCTg2RDA4RDUzMTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJl
YWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURERjdBQkQ1MTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjI3RTVFQjEx
RjEyODE5MDBBMzEzQjUgLyogUGFnZUFsbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjY2Niw2ICsyNjgwLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKIAkJCQk5MzJGNUJERDA4MjJBMUM3MDA3MzY5NzUgLyoganNjLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHJl
dmlzaW9uIDY0NjgwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDkgQEAgdm9pZCBIZWFwOjpkZXN0cm95KCkKIAog
ICAgIGZyZWVCbG9ja3MoKTsKIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtH
Q0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzW2ld
LmRlYWxsb2NhdGUoKTsKKwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICBp
ZiAobV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKSB7CiAgICAgICAgIGludCBlcnJvciA9IHB0aHJl
YWRfa2V5X2RlbGV0ZShtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIpOwpAQCAtOTEwLDYgKzkxMywz
OCBAQCB2b2lkIEhlYXA6Om1hcmtTdGFja09iamVjdHNDb25zZXJ2YXRpdmVsCiAjZW5kaWYKIH0K
IAordm9pZCBIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkKKyAgICAgICAgd2Vh
a0dDSGFuZGxlUG9vbChpKS0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6
dXBkYXRlKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgV2Vha0dDSGFuZGxlUG9v
bDo6bnVtUG9vbEVudHJpZXM7ICsraSkgeworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLmlzVmFs
aWRQdHIoKSkgeworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9lbnRyaWVzW2ldLnB0cigp
OworICAgICAgICAgICAgaWYgKCFjZWxsIHx8ICFIZWFwOjppc0NlbGxNYXJrZWQoY2VsbCkpCisg
ICAgICAgICAgICAgICAgbV9lbnRyaWVzW2ldLmludmFsaWRhdGUoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworV2Vha0dDSGFuZGxlKiBIZWFwOjphZGRXZWFrR0NIYW5kbGUoSlNDZWxsKiBwdHIp
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGlmICghd2Vha0dDSGFuZGxlUG9vbChpKS0+aXNGdWxsKCkpCisg
ICAgICAgICAgICByZXR1cm4gd2Vha0dDSGFuZGxlUG9vbChpKS0+YWxsb2NhdGUocHRyKTsKKwor
ICAgIEFTU0VSVChXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZSA9PSBCTE9DS19TSVpFKTsKKwor
ICAgIEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+IGFsbG9jYXRpb24g
PSBtX2Jsb2NrYWxsb2NhdG9yLmFsbG9jYXRlKCk7CisgICAgbV93ZWFrR0NIYW5kbGVQb29scy5h
cHBlbmQoYWxsb2NhdGlvbik7CisKKyAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29sID0gbmV3IChh
bGxvY2F0aW9uKSBXZWFrR0NIYW5kbGVQb29sKCk7CisgICAgcmV0dXJuIHBvb2wtPmFsbG9jYXRl
KHB0cik7Cit9CisKIHZvaWQgSGVhcDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7CiAgICAgQVNTRVJU
KGspOwpAQCAtMTA0Niw2ICsxMDgxLDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIG1h
cmtTdGFjay5kcmFpbigpOwogICAgIG1hcmtTdGFjay5jb21wYWN0KCk7CiAKKyAgICB1cGRhdGVX
ZWFrR0NIYW5kbGVzKCk7CisKICAgICBtX2hlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3Bl
cmF0aW9uOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHJldmlzaW9u
IDY0NjgwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBDb2xsZWN0b3JfaAogCiAjaW5jbHVkZSAi
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVk
ZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5o
PgpAQCAtMTMxLDYgKzEzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9v
bCBpc0NlbGxNYXJrZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIG1hcmtD
ZWxsKEpTQ2VsbCopOwogCisgICAgICAgIFdlYWtHQ0hhbmRsZSogYWRkV2Vha0dDSGFuZGxlKEpT
Q2VsbCopOworCiAgICAgICAgIHZvaWQgbWFya0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYsIHZv
aWQqIHN0YXJ0LCB2b2lkKiBlbmQpOwogCiAgICAgICAgIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPiYgbWFya0xpc3RTZXQoKSB7IGlmICghbV9tYXJrTGlzdFNldCkgbV9tYXJrTGlzdFNl
dCA9IG5ldyBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj47IHJldHVybiAqbV9tYXJrTGlz
dFNldDsgfQpAQCAtMTcyLDExICsxNzUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgbWFya090aGVyVGhyZWFkQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiwgVGhyZWFkKik7CiAg
ICAgICAgIHZvaWQgbWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYpOwog
CisgICAgICAgIHZvaWQgdXBkYXRlV2Vha0dDSGFuZGxlcygpOworICAgICAgICBXZWFrR0NIYW5k
bGVQb29sKiB3ZWFrR0NIYW5kbGVQb29sKHNpemVfdCBpbmRleCk7CisKICAgICAgICAgdHlwZWRl
ZiBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiBQcm90ZWN0Q291bnRTZXQ7CiAKICAgICAgICAgQ29s
bGVjdG9ySGVhcCBtX2hlYXA7CiAKICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVk
VmFsdWVzOworICAgICAgICBXVEY6OlZlY3RvcjxBbGlnbmVkTWVtb3J5PFdlYWtHQ0hhbmRsZVBv
b2w6OnBvb2xTaXplPiA+IG1fd2Vha0dDSGFuZGxlUG9vbHM7CiAKICAgICAgICAgSGFzaFNldDxN
YXJrZWRBcmd1bWVudEJ1ZmZlcio+KiBtX21hcmtMaXN0U2V0OwogCkBAIC0zMDIsNiArMzA5LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtX2hlYXAubmV4dE51bWJlciA9IHN0YXRpY19j
YXN0PGNoYXIqPihyZXN1bHQpICsgKENFTExfU0laRSAvIDIpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KKworCisgICAgaW5saW5lIFdlYWtHQ0hhbmRsZVBvb2wqIEhlYXA6OndlYWtH
Q0hhbmRsZVBvb2woc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYWtHQ0hhbmRsZVBvb2wqPihtX3dlYWtHQ0hhbmRsZVBvb2xzW2luZGV4XS5iYXNlKCkp
OworICAgIH0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLyogQ29sbGVjdG9yX2ggKi8K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NIYW5k
bGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dlYWtHQ0hhbmRsZVBvb2wqIFdlYWtHQ0hhbmRs
ZTo6cG9vbCgpCit7CisgICAgdWludHB0cl90IHBvb2wgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHRoaXMpICYgV2Vha0dDSGFuZGxlUG9vbDo6cG9vbE1hc2spOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdlYWtHQ0hhbmRsZVBvb2wqPihwb29sKTsKK30KKworV2Vha0dDSGFu
ZGxlUG9vbDo6V2Vha0dDSGFuZGxlUG9vbCgpCit7CisgICAgQVNTRVJUKHNpemVvZihXZWFrR0NI
YW5kbGVQb29sKSA8PSBXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZSk7CisgICAgbV9lbnRyaWVz
U2l6ZSA9IDA7CisgICAgbV9pbml0aWFsQWxsb2MgPSAxOworICAgIG1fZW50cmllc1swXS5uZXh0
KDApOworfQorCitXZWFrR0NIYW5kbGUqIFdlYWtHQ0hhbmRsZVBvb2w6OmFsbG9jYXRlKEpTQ2Vs
bCogY2VsbCkKK3sKKyAgICBBU1NFUlQoY2VsbCk7CisgICAgQVNTRVJUKG1fZW50cmllc1swXS5p
c05leHQoKSk7CisgICAgdW5zaWduZWQgZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0ubmV4dCgpOwor
ICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsK
KyAgICBBU1NFUlQobV9lbnRyaWVzU2l6ZSA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRy
aWVzKTsKKworICAgIGlmIChtX2VudHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBv
b2xFbnRyaWVzIC0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZnJlZUxpc3QpIHsK
KyAgICAgICAgdW5zaWduZWQgaSA9IGZyZWVMaXN0OworICAgICAgICBmcmVlTGlzdCA9IG1fZW50
cmllc1tpXS5uZXh0KCk7CisgICAgICAgIG1fZW50cmllc1tpXS5wdHIoY2VsbCk7CisgICAgICAg
IG1fZW50cmllc1swXS5uZXh0KGZyZWVMaXN0KTsKKyAgICAgICAgKyttX2VudHJpZXNTaXplOwor
ICAgICAgICByZXR1cm4gJm1fZW50cmllc1tpXTsKKyAgICB9CisKKyAgICBpZiAobV9pbml0aWFs
QWxsb2MgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcykgeworICAgICAgICB1bnNp
Z25lZCBpID0gbV9pbml0aWFsQWxsb2M7CisgICAgICAgICsrbV9pbml0aWFsQWxsb2M7CisgICAg
ICAgIG1fZW50cmllc1tpXS5wdHIoY2VsbCk7CisgICAgICAgICsrbV9lbnRyaWVzU2l6ZTsKKyAg
ICAgICAgcmV0dXJuICZtX2VudHJpZXNbaV07CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6ZnJlZShX
ZWFrR0NIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBBU1NFUlQoaGFuZGxlLT5wb29sKCkgPT0gdGhp
cyk7CisgICAgQVNTRVJUKG1fZW50cmllc1swXS5pc05leHQoKSk7CisgICAgdW5zaWduZWQgZnJl
ZUxpc3QgPSBtX2VudHJpZXNbMF0ubmV4dCgpOworICAgIEFTU0VSVChmcmVlTGlzdCA8IFdlYWtH
Q0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKKyAgICBoYW5kbGUtPm5leHQoZnJlZUxpc3Qp
OworICAgIG1fZW50cmllc1swXS5uZXh0KGhhbmRsZSAtIG1fZW50cmllcyk7CisgICAgLS1tX2Vu
dHJpZXNTaXplOworfQorCit2b2lkKiBXZWFrR0NIYW5kbGVQb29sOjpvcGVyYXRvciBuZXcoc2l6
ZV90LCBBbGlnbmVkTWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplPiYgYWxsb2NhdGlv
bikKK3sKKyAgICByZXR1cm4gYWxsb2NhdGlvbi5iYXNlKCk7Cit9CisKK30KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHQ0hhbmRsZV9oCisjZGVmaW5lIEdDSGFuZGxlX2gKKworI2luY2x1ZGUgIkFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7
CitjbGFzcyBKU0NlbGw7CitjbGFzcyBXZWFrR0NIYW5kbGU7CitjbGFzcyBXZWFrR0NIYW5kbGVQ
b29sOworCitjbGFzcyBXZWFrR0NIYW5kbGUgeworcHVibGljOgorICAgIC8vIEJlY2F1c2UgSlND
ZWxsIG9iamVjdHMgYXJlIGFsaWduZWQsIHdlIGNhbiB1c2UgdGhlIGxvd2VyIHR3byBiaXRzIGFz
CisgICAgLy8gc3RhdHVzIGZsYWdzLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGlzIHNldCB3
aGVuIHRoZSBoYW5kbGUgaXMgbm90IGEKKyAgICAvLyBwb2ludGVyLCBpLmUuIHdoZW4gaXQncyB1
c2VkIGFzIGEgb2Zmc2V0IGZvciB0aGUgZnJlZSBsaXN0IGluCisgICAgLy8gV2Vha0dDSGFuZGxl
UG9vbC4gVGhlIHNlY29uZCBsZWFzdCBzaWduaWZpY2FudCBiaXQgaXMgc2V0IHdoZW4gdGhlIG9i
amVjdAorICAgIC8vIHRoZSBwb2ludGVyIGNvcnJlc3BvbmRzIHRvIGhhcyBiZWVuIGRlbGV0ZWQg
YnkgYSBnYXJiYWdlIGNvbGxlY3Rpb24KKworICAgIGJvb2wgaXNWYWxpZFB0cigpIHsgcmV0dXJu
ICEobV9wdHIgJiAzKTsgfQorICAgIGJvb2wgaXNQdHIoKSB7IHJldHVybiAhKG1fcHRyICYgMSk7
IH0KKyAgICBib29sIGlzTmV4dCgpIHsgcmV0dXJuIChtX3B0ciAmIDMpID09IDE7IH0KKworICAg
IHZvaWQgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZFB0cigpKTsK
KyAgICAgICAgbV9wdHIgfD0gMjsKKyAgICB9CisKKyAgICBKU0NlbGwqIHB0cigpCisgICAgewor
ICAgICAgICBBU1NFUlQoaXNQdHIoKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEpTQ2VsbCo+KG1fcHRyICYgfjMpOworICAgIH0KKworICAgIHZvaWQgcHRyKEpTQ2VsbCogcCkK
KyAgICB7CisgICAgICAgIG1fcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOwor
ICAgICAgICBBU1NFUlQoaXNQdHIoKSk7CisgICAgfQorCisgICAgdWludHB0cl90IG5leHQoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTmV4dCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyID4+
IDI7CisgICAgfQorCisgICAgdm9pZCBuZXh0KHVpbnRwdHJfdCBuKQorICAgIHsKKyAgICAgICAg
bV9wdHIgPSAobiA8PCAyKSB8IDE7CisgICAgICAgIEFTU0VSVChpc05leHQoKSk7CisgICAgfQor
CisgICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCgpOworCitwcml2YXRlOgorCisgICAgdWludHB0
cl90IG1fcHRyOworfTsKKworY2xhc3MgV2Vha0dDSGFuZGxlUG9vbCB7CitwdWJsaWM6CisjaWYg
T1MoV0lOQ0UpIHx8IE9TKFNZTUJJQU4pCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sU2l6
ZSA9IDY0ICogMTAyNDsgLy8gNjRrCisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9v
bFNpemUgPSAyNTYgKiAxMDI0OyAvLyAyNTZrCisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHBvb2xNYXNrID0gfihwb29sU2l6ZSAtIDEpOworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bnVtUG9vbEVudHJpZXMgPSAocG9vbFNpemUgLSBzaXplb2YoSGVhcCopIC0gMyAqIHNpemVvZih1
bnNpZ25lZCkpIC8gc2l6ZW9mKFdlYWtHQ0hhbmRsZSk7CisKKyAgICBXZWFrR0NIYW5kbGVQb29s
KCk7CisKKyAgICBXZWFrR0NIYW5kbGUqIGFsbG9jYXRlKEpTQ2VsbCogY2VsbCk7CisgICAgdm9p
ZCBmcmVlKFdlYWtHQ0hhbmRsZSopOworCisgICAgYm9vbCBpc0Z1bGwoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZW50cmllc1NpemUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmll
cyk7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51
bVBvb2xFbnRyaWVzIC0gMTsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpw
b29sU2l6ZT4mKTsKKworcHJpdmF0ZToKKyAgICBIZWFwKiBtX2hlYXA7CisgICAgdW5zaWduZWQg
bV9lbnRyaWVzU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxBbGxvYzsKKworICAgIFdlYWtH
Q0hhbmRsZSBtX2VudHJpZXNbV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXNdOworfTsK
KworfQorI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ1B0ci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgJKHJldmlzaW9u
IDY0NjgwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWFrR0NQdHJfaAogCiAjaW5jbHVkZSAi
Q29sbGVjdG9yLmgiCisjaW5jbHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNCwyMyArMzUsNDEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAvLyBBIHNtYXJ0IHBvaW50ZXIgd2hvc2UgZ2V0KCkgZnVuY3Rpb24gcmV0dXJucyAw
IGZvciBjZWxscyBhd2FpdGluZyBkZXN0cnVjdGlvbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBXZWFrR0NQdHIgOiBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgV2Vha0dDUHRyKCkg
OiBtX3B0cigwKSB7IH0KKyAgICBXZWFrR0NQdHIoKQorICAgICAgICA6IG1fcHRyKDApCisgICAg
eworICAgIH0KKwogICAgIFdlYWtHQ1B0cihUKiBwdHIpIHsgYXNzaWduKHB0cik7IH0KIAorICAg
IH5XZWFrR0NQdHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKQorICAgICAgICAgICAgbV9w
dHItPnBvb2woKS0+ZnJlZShtX3B0cik7CisgICAgfQorCisgICAgVCogdW5jaGVja2VkR2V0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUKj4obV9wdHItPnB0cigpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgVCogZ2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghbV9wdHIgfHwgIUhlYXA6Omlz
Q2VsbE1hcmtlZChtX3B0cikpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJu
IG1fcHRyOworICAgICAgICBpZiAobV9wdHIgJiYgbV9wdHItPmlzVmFsaWRQdHIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wdHItPnB0cigpKTsKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgY2xlYXIoSlNDZWxsKiBwdHIpCisgICAgYm9v
bCBjbGVhcihKU0NlbGwqIHApCiAgICAgewotICAgICAgICBpZiAocHRyID09IG1fcHRyKSB7Ci0g
ICAgICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghbV9wdHIgfHwgbV9wdHItPnB0
cigpICE9IHApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9wdHItPnBv
b2woKS0+ZnJlZShtX3B0cik7CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9
CkBAIC02MiwyNSArODEsMjggQEAgcHVibGljOgogI2lmIENPTVBJTEVSKFdJTlNDVykKICAgICBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KICNlbHNlCi0gICAgdHlwZWRl
ZiBUKiBXZWFrR0NQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIHR5cGVkZWYgV2Vha0dD
SGFuZGxlKiBXZWFrR0NQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOwogICAgIG9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBnZXQoKSA/ICZXZWFrR0NQdHI6Om1f
cHRyIDogMDsgfQogI2VuZGlmCiAKICAgICBXZWFrR0NQdHImIG9wZXJhdG9yPShUKik7CisgICAg
V2Vha0dDUHRyJiBvcGVyYXRvcj0oY29uc3QgV2Vha0dDUHRyPFQ+JiBvcHRyKTsKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBib29sIGhhc0RlYWRPYmplY3QoKSBjb25zdCB7IHJldHVybiAh
IW1fcHRyOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbihUKiBwdHIpCisg
ICAgdm9pZCBhc3NpZ24oSlNDZWxsKiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQocHRyKTsK
LSAgICAgICAgSGVhcDo6bWFya0NlbGwocHRyKTsKLSAgICAgICAgbV9wdHIgPSBwdHI7CisgICAg
ICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIG1fcHRyLT5wdHIocHRyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9wdHIgPSBIZWFwOjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShw
dHIpOwogICAgIH0KIAotICAgIFQqIG1fcHRyOworICAgIFdlYWtHQ0hhbmRsZSogbV9wdHI7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dDUHRy
PFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKQEAgLTg5LDYgKzExMSwxNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUCiAgICAgcmV0dXJuICp0aGlzOwogfQogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dDUHRyPFQ+OjpvcGVy
YXRvcj0oY29uc3QgV2Vha0dDUHRyPFQ+JiBvcHRyKQoreworICAgIEFTU0VSVChvcHRyLm1fcHRy
KTsKKyAgICBpZiAoIW1fcHRyKSB7CisgICAgICAgIEpTQ2VsbCogcHRyID0gb3B0ci5tX3B0ci0+
cHRyKCk7CisgICAgICAgIG1fcHRyID0gSGVhcDo6aGVhcChwdHIpLT5hZGRXZWFrR0NIYW5kbGUo
cHRyKTsKKyAgICB9CisgICAgKm1fcHRyID0gKm9wdHIubV9wdHI7CisgICAgcmV0dXJuICp0aGlz
OworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBXZWFrR0NQdHI8VD4mIGEsIGNvbnN0IFdlYWtHQ1B0cjxVPiYgYikKIHsg
CiAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63509</attachid>
            <date>2010-08-04 16:22:55 -0700</date>
            <delta_ts>2010-08-05 14:21:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>774</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">QSAgICAgICBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9CaXRtYXAuaApBICAgICAgIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9HQ0hhbmRsZS5oCkEgICAgICAgV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo/ICAg
ICAgIEphdmFTY3JpcHRDb3JlLy5naXQKPyAgICAgICBKYXZhU2NyaXB0Q29yZS8uZ2l0aWdub3Jl
CkEgICAgICAgSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCk0gICAgICAgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCk0gICAgICAgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NQdHIuaApNICAgICAgIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9y
LmgKQSAgICAgICBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmNwcApNICAgICAgIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApNICAgICAgIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKTSAgICAgICBKYXZhU2NyaXB0
Q29yZS9BbmRyb2lkLm1rCkEgICAgICAgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0JpdG1hcC5oCkEgICAgICAgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKQSAgICAgICBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0dDSGFuZGxlLmgK
</data>
<flag name="review"
          id="51878"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63635</attachid>
            <date>2010-08-05 14:21:41 -0700</date>
            <delta_ts>2010-08-05 15:20:33 -0700</delta_ts>
            <desc>patch (with patch!)</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>24408</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0Nzg1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDgtMDUgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzMjA3CisKKyAgICAgICAgV2Vha0dDUHRyJ3Mgc2hvdWxkIGluc3RlYWQgb2YgZGly
ZWN0bHkgcG9pbnRpbmcgdG8gdGhlIEdDJ2Qgb2JqZWN0CisgICAgICAgIHNob3VsZCBiZSBkaXJl
Y3RlZCB0byBhbiBhcnJheSBvZiBwb2ludGVycyB0aGF0IGNhbiBiZSB1cGRhdGVkIGZvcgorICAg
ICAgICBtb3ZhYmxlIG9iamVjdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6
CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRsZXMpOgorICAgICAgICAoSlND
OjpXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjphZGRXZWFr
R0NIYW5kbGUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgIChKU0M6OkhlYXA6OndlYWtHQ0hhbmRsZVBvb2wp
OgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
V2Vha0dDSGFuZGxlOjpwb29sKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6V2Vh
a0dDSGFuZGxlUG9vbCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6OmFsbG9jYXRl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6ZnJlZSk6CisgICAgICAgIChKU0M6
OldlYWtHQ0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyk6CisgICAgICAgICogcnVudGltZS9HQ0hh
bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1ZhbGlkUHRyKToK
KyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1B0cik6CisgICAgICAgIChKU0M6OldlYWtH
Q0hhbmRsZTo6aXNOZXh0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppbnZhbGlkYXRl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwdHIpOgorICAgICAgICAoSlNDOjpXZWFr
R0NIYW5kbGU6Om5leHQpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5kbGVQb29sOjppc0Z1bGwp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDUHRyLmg6CisgICAgICAgIChKU0M6OldlYWtHQ1B0
cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp+V2Vha0dDUHRyKToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDUHRyOjpnZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjphc3NpZ24pOgorCiAyMDEwLTA4LTA1ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA2NDc4MykKKysr
IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcg
QEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAlydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBcCisJcnVudGltZS9HQ0hhbmRsZS5jcHAgXAogCXJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cCBcCiAJcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIFwKIAlydW50aW1lL0lkZW50aWZp
ZXIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NDc4MykKKysrIEph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNiArMjY4
LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZp
dHlDYWxsYmFjay5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxi
YWNrLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwIFwKKwlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
dGVyU2V0dGVyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBc
CiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcg
QEAgX19aTjNKU0MxMlN0cmluZ09iamVjdDI0Z2V0T3duUHJvcGVydHlEZQogX19aTjNKU0MxMlN0
cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFs
dWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0MxMlN0cmluZ09iamVjdDRpbmZvRQog
X19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFz
c1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTJXZWFrR0NI
YW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1iZXJDZWxsRVBOU185RXhlY1N0YXRlRWQKIF9f
Wk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CkBA
IC0xNzEsNiArMTcyLDcgQEAgX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0ds
bwogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJv
bFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9f
Wk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0
YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQorX19aTjNK
U0MxNldlYWtHQ0hhbmRsZVBvb2w0ZnJlZUVQTlNfMTJXZWFrR0NIYW5kbGVFCiBfX1pOM0pTQzE2
Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0Mx
NnRocm93U3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2dG9VSW50MzJTbG93
Q2FzZUVkUmIKQEAgLTIwMSw2ICsyMDMsNyBAQCBfX1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENh
bGxGcmFtZUVSS05TCiBfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRp
b25FUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MzTmFORQogX19aTjNKU0M0SGVhcDE0cHJp
bWFyeUhlYXBFbmRFdgorX19aTjNKU0M0SGVhcDE1YWRkV2Vha0dDSGFuZGxlRVBOU182SlNDZWxs
RQogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0KIF9fWk4zSlNDNEhlYXAxNm9iamVj
dFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE2cHJpbWFyeUhlYXBCZWdpbkV2CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNyw4
IEBACiAgICAgICAgICAgICAncnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oJywKICAgICAgICAg
ICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAnLAogICAgICAgICAgICAgJ3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NIYW5kbGUu
Y3BwJywKKyAgICAgICAgICAgICdydW50aW1lL0dDSGFuZGxlLmgnLAogICAgICAgICAgICAgJ3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwJywKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQw
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBc
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBcCisgICAgcnVudGltZS9HQ0hhbmRsZS5jcHAgXAogICAgIHJ1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAgICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3Bw
IFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MTIsNiArNTEyLDEyIEBACiAJCURE
MjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEyMDhEMUZG
MDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OwogCQlERDI3MjQ2OTEy
MDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3
IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlERDM3N0NCQzEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDM3N0NC
QjEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRERFODJBRDMxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
RTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ0
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5k
bGUuY3BwICovOyB9OworCQlEREU4MkFENTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDEx
MjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJRERFODJBRDYxMjA5RDk1
NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLzsg
fTsKKwkJRERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAv
KiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERGN0FCRDQxMUY2MEVEMjAwMTA4
RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5oICovOyB9OwogCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLzsgfTsKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA1OCw2ICsxMDY0LDggQEAKIAkJRDIxMjAy
MjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERDI3MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIwNzJDMTgwMDZB
MjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERTgyQUQxMTIwOUQ5NTUwMDVDMTc1
NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
Q0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERTgyQUQyMTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREY3QUJEMjExRjYw
RUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxi
YWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3OThE
MDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNCw2
ICsxNjMyLDggQEAKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAogCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblBy
b3RvdHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggKi8sCisJCQkJRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxl
LmNwcCAqLywKKwkJCQlEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLywK
IAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJ
CQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJQkMy
NTdERUQwRTFGNTJFRDAwMTZCNkM5IC8qIEdsb2JhbEV2YWxGdW5jdGlvbi5jcHAgKi8sCkBAIC0x
OTEyLDYgKzE5MjIsNyBAQAogCQkJCTE0NDAwNUNDMEE1MzM4RjgwMDA1RjA2MSAvKiBOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDc0QTBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUREMjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlEREU4MkFENjEyMDlEOTU1MDA1
QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIxNCw2ICsyMjI1LDcgQEAK
IAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEREY3QUJENDExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlERDI3MjQ2OTEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRERFODJBRDgxMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0NzQsNiArMjQ4Niw3IEBA
CiAJCQkJMTQxMjExMzQwQTQ4Nzk1ODAwNDgwMjU1IC8qIG1pbmlkb20uYyBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDAwNjNGMEE1MzU5OEEwMDA1RjA2MSAvKiBOb2RlLmMgaW4gU291cmNlcyAqLywK
IAkJCQkxNDQwMDc0QjBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3QuYyBpbiBTb3VyY2VzICov
LAorCQkJCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI0ODIsNiArMjQ5NSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3Rh
cGkuYyBpbiBTb3VyY2VzICovLAorCQkJCURERTgyQUQ0MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NjEsNiArMjY3NSw3IEBACiAJCQkJODZEMDhE
NTMxMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2MjdFNUVCMTFGMTI4MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjY5LDYgKzI2ODQsNyBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkREMDgy
MkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJBRDMxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAs
OSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogCiAgICAgZnJlZUJsb2NrcygpOwogCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIG1fd2Vha0dDSGFuZGxlUG9vbHNbaV0uZGVhbGxvY2F0ZSgpOworCiAjaWYgRU5BQkxF
KEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIGlmIChtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIp
IHsKICAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKG1fY3VycmVudFRocmVh
ZFJlZ2lzdHJhcik7CkBAIC05MDYsNiArOTA5LDM4IEBAIHZvaWQgSGVhcDo6bWFya1N0YWNrT2Jq
ZWN0c0NvbnNlcnZhdGl2ZWwKICNlbmRpZgogfQogCit2b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hh
bmRsZXMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBv
b2xzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsK
K30KKwordm9pZCBXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUoKQoreworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2VudHJpZXNbaV0uaXNWYWxpZFB0cigpKSB7CisgICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSBtX2VudHJpZXNbaV0ucHRyKCk7CisgICAgICAgICAgICBpZiAoIWNlbGwgfHwg
IUhlYXA6OmlzQ2VsbE1hcmtlZChjZWxsKSkKKyAgICAgICAgICAgICAgICBtX2VudHJpZXNbaV0u
aW52YWxpZGF0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitXZWFrR0NIYW5kbGUqIEhlYXA6
OmFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqIHB0cikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYgKCF3ZWFr
R0NIYW5kbGVQb29sKGkpLT5pc0Z1bGwoKSkKKyAgICAgICAgICAgIHJldHVybiB3ZWFrR0NIYW5k
bGVQb29sKGkpLT5hbGxvY2F0ZShwdHIpOworCisgICAgQVNTRVJUKFdlYWtHQ0hhbmRsZVBvb2w6
OnBvb2xTaXplID09IEJMT0NLX1NJWkUpOworCisgICAgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5k
bGVQb29sOjpwb29sU2l6ZT4gYWxsb2NhdGlvbiA9IG1fYmxvY2thbGxvY2F0b3IuYWxsb2NhdGUo
KTsKKyAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzLmFwcGVuZChhbGxvY2F0aW9uKTsKKworICAgIFdl
YWtHQ0hhbmRsZVBvb2wqIHBvb2wgPSBuZXcgKGFsbG9jYXRpb24pIFdlYWtHQ0hhbmRsZVBvb2wo
KTsKKyAgICByZXR1cm4gcG9vbC0+YWxsb2NhdGUocHRyKTsKK30KKwogdm9pZCBIZWFwOjpwcm90
ZWN0KEpTVmFsdWUgaykKIHsKICAgICBBU1NFUlQoayk7CkBAIC0xMDQyLDYgKzEwNzcsOCBAQCB2
b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgbWFya1N0YWNrLmRyYWluKCk7CiAgICAgbWFya1N0
YWNrLmNvbXBhY3QoKTsKIAorICAgIHVwZGF0ZVdlYWtHQ0hhbmRsZXMoKTsKKwogICAgIG1faGVh
cC5vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CiB9CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVm
aW5lIENvbGxlY3Rvcl9oCiAKICNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisj
aW5jbHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CkBAIC0xMzEsNiArMTMyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2VsbE1hcmtlZChjb25zdCBKU0NlbGwq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0NlbGwoSlNDZWxsKik7CiAKKyAgICAgICAgV2Vh
a0dDSGFuZGxlKiBhZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7CisKICAgICAgICAgdm9pZCBtYXJr
Q29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKICAg
ICAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgpIHsgaWYg
KCFtX21hcmtMaXN0U2V0KSBtX21hcmtMaXN0U2V0ID0gbmV3IEhhc2hTZXQ8TWFya2VkQXJndW1l
bnRCdWZmZXIqPjsgcmV0dXJuICptX21hcmtMaXN0U2V0OyB9CkBAIC0xNzIsMTEgKzE3NSwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRp
dmVseShNYXJrU3RhY2smLCBUaHJlYWQqKTsKICAgICAgICAgdm9pZCBtYXJrU3RhY2tPYmplY3Rz
Q29uc2VydmF0aXZlbHkoTWFya1N0YWNrJik7CiAKKyAgICAgICAgdm9pZCB1cGRhdGVXZWFrR0NI
YW5kbGVzKCk7CisgICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdlYWtHQ0hhbmRsZVBvb2woc2l6
ZV90IGluZGV4KTsKKwogICAgICAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+IFBy
b3RlY3RDb3VudFNldDsKIAogICAgICAgICBDb2xsZWN0b3JIZWFwIG1faGVhcDsKIAogICAgICAg
ICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CisgICAgICAgIFdURjo6VmVjdG9y
PEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+ID4gbV93ZWFrR0NIYW5k
bGVQb29sczsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFy
a0xpc3RTZXQ7CiAKQEAgLTMwMiw2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1faGVhcC5uZXh0TnVtYmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdCkgKyAoQ0VMTF9T
SVpFIC8gMik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisKKyAgICBpbmxpbmUg
V2Vha0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFuZGxlUG9vbChzaXplX3QgaW5kZXgpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vh
a0dDSGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7CisgICAgfQogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvKiBDb2xsZWN0b3JfaCAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0hhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hh
bmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0hhbmRsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
V2Vha0dDSGFuZGxlUG9vbCogV2Vha0dDSGFuZGxlOjpwb29sKCkKK3sKKyAgICB1aW50cHRyX3Qg
cG9vbCA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgJiBXZWFrR0NIYW5kbGVQ
b29sOjpwb29sTWFzayk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0dDSGFuZGxl
UG9vbCo+KHBvb2wpOworfQorCitXZWFrR0NIYW5kbGVQb29sOjpXZWFrR0NIYW5kbGVQb29sKCkK
K3sKKyAgICBBU1NFUlQoc2l6ZW9mKFdlYWtHQ0hhbmRsZVBvb2wpIDw9IFdlYWtHQ0hhbmRsZVBv
b2w6OnBvb2xTaXplKTsKKyAgICBtX2VudHJpZXNTaXplID0gMDsKKyAgICBtX2luaXRpYWxBbGxv
YyA9IDE7CisgICAgbV9lbnRyaWVzWzBdLm5leHQoMCk7Cit9CisKK1dlYWtHQ0hhbmRsZSogV2Vh
a0dDSGFuZGxlUG9vbDo6YWxsb2NhdGUoSlNDZWxsKiBjZWxsKQoreworICAgIEFTU0VSVChjZWxs
KTsKKyAgICBBU1NFUlQobV9lbnRyaWVzWzBdLmlzTmV4dCgpKTsKKyAgICB1bnNpZ25lZCBmcmVl
TGlzdCA9IG1fZW50cmllc1swXS5uZXh0KCk7CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dD
SGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworICAgIEFTU0VSVChtX2VudHJpZXNTaXplIDwg
V2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMpOworCisgICAgaWYgKG1fZW50cmllc1Np
emUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmIChmcmVlTGlzdCkgeworICAgICAgICB1bnNpZ25lZCBpID0gZnJlZUxp
c3Q7CisgICAgICAgIGZyZWVMaXN0ID0gbV9lbnRyaWVzW2ldLm5leHQoKTsKKyAgICAgICAgbV9l
bnRyaWVzW2ldLnB0cihjZWxsKTsKKyAgICAgICAgbV9lbnRyaWVzWzBdLm5leHQoZnJlZUxpc3Qp
OworICAgICAgICArK21fZW50cmllc1NpemU7CisgICAgICAgIHJldHVybiAmbV9lbnRyaWVzW2ld
OworICAgIH0KKworICAgIGlmIChtX2luaXRpYWxBbGxvYyA8IFdlYWtHQ0hhbmRsZVBvb2w6Om51
bVBvb2xFbnRyaWVzKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX2luaXRpYWxBbGxvYzsKKyAg
ICAgICAgKyttX2luaXRpYWxBbGxvYzsKKyAgICAgICAgbV9lbnRyaWVzW2ldLnB0cihjZWxsKTsK
KyAgICAgICAgKyttX2VudHJpZXNTaXplOworICAgICAgICByZXR1cm4gJm1fZW50cmllc1tpXTsK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBXZWFrR0NIYW5kbGVQb29sOjpmcmVlKFdlYWtHQ0hhbmRsZSogaGFuZGxlKQoreworICAg
IEFTU0VSVChoYW5kbGUtPnBvb2woKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobV9lbnRyaWVzWzBd
LmlzTmV4dCgpKTsKKyAgICB1bnNpZ25lZCBmcmVlTGlzdCA9IG1fZW50cmllc1swXS5uZXh0KCk7
CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMp
OworICAgIGhhbmRsZS0+bmV4dChmcmVlTGlzdCk7CisgICAgbV9lbnRyaWVzWzBdLm5leHQoaGFu
ZGxlIC0gbV9lbnRyaWVzKTsKKyAgICAtLW1fZW50cmllc1NpemU7Cit9CisKK3ZvaWQqIFdlYWtH
Q0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyhzaXplX3QsIEFsaWduZWRNZW1vcnk8V2Vha0dDSGFu
ZGxlUG9vbDo6cG9vbFNpemU+JiBhbGxvY2F0aW9uKQoreworICAgIHJldHVybiBhbGxvY2F0aW9u
LmJhc2UoKTsKK30KKworfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNp
b24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDSGFuZGxlX2gKKyNkZWZp
bmUgR0NIYW5kbGVfaAorCisjaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcDsKK2NsYXNzIEpTQ2VsbDsKK2NsYXNzIFdlYWtH
Q0hhbmRsZTsKK2NsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7CisKK2NsYXNzIFdlYWtHQ0hhbmRsZSB7
CitwdWJsaWM6CisgICAgLy8gQmVjYXVzZSBKU0NlbGwgb2JqZWN0cyBhcmUgYWxpZ25lZCwgd2Ug
Y2FuIHVzZSB0aGUgbG93ZXIgdHdvIGJpdHMgYXMKKyAgICAvLyBzdGF0dXMgZmxhZ3MuIFRoZSBs
ZWFzdCBzaWduaWZpY2FudCBiaXQgaXMgc2V0IHdoZW4gdGhlIGhhbmRsZSBpcyBub3QgYQorICAg
IC8vIHBvaW50ZXIsIGkuZS4gd2hlbiBpdCdzIHVzZWQgYXMgYSBvZmZzZXQgZm9yIHRoZSBmcmVl
IGxpc3QgaW4KKyAgICAvLyBXZWFrR0NIYW5kbGVQb29sLiBUaGUgc2Vjb25kIGxlYXN0IHNpZ25p
ZmljYW50IGJpdCBpcyBzZXQgd2hlbiB0aGUgb2JqZWN0CisgICAgLy8gdGhlIHBvaW50ZXIgY29y
cmVzcG9uZHMgdG8gaGFzIGJlZW4gZGVsZXRlZCBieSBhIGdhcmJhZ2UgY29sbGVjdGlvbgorCisg
ICAgYm9vbCBpc1ZhbGlkUHRyKCkgeyByZXR1cm4gIShtX3B0ciAmIDMpOyB9CisgICAgYm9vbCBp
c1B0cigpIHsgcmV0dXJuICEobV9wdHIgJiAxKTsgfQorICAgIGJvb2wgaXNOZXh0KCkgeyByZXR1
cm4gKG1fcHRyICYgMykgPT0gMTsgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1ZhbGlkUHRyKCkpOworICAgICAgICBtX3B0ciB8PSAyOworICAgIH0K
KworICAgIEpTQ2VsbCogcHRyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1B0cigpKTsKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9wdHIgJiB+Myk7CisgICAg
fQorCisgICAgdm9pZCBwdHIoSlNDZWxsKiBwKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7CisgICAgICAgIEFTU0VSVChpc1B0cigpKTsKKyAg
ICB9CisKKyAgICB1aW50cHRyX3QgbmV4dCgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNOZXh0
KCkpOworICAgICAgICByZXR1cm4gbV9wdHIgPj4gMjsKKyAgICB9CisKKyAgICB2b2lkIG5leHQo
dWludHB0cl90IG4pCisgICAgeworICAgICAgICBtX3B0ciA9IChuIDw8IDIpIHwgMTsKKyAgICAg
ICAgQVNTRVJUKGlzTmV4dCgpKTsKKyAgICB9CisKKyAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29s
KCk7CisKK3ByaXZhdGU6CisKKyAgICB1aW50cHRyX3QgbV9wdHI7Cit9OworCitjbGFzcyBXZWFr
R0NIYW5kbGVQb29sIHsKK3B1YmxpYzoKKyNpZiBPUyhXSU5DRSkgfHwgT1MoU1lNQklBTikKKyAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xTaXplID0gNjQgKiAxMDI0OyAvLyA2NGsKKyNlbHNl
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sU2l6ZSA9IDI1NiAqIDEwMjQ7IC8vIDI1NmsK
KyNlbmRpZgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+KHBvb2xTaXplIC0g
MSk7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9IChwb29sU2l6ZSAt
IHNpemVvZihIZWFwKikgLSAzICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXplb2YoV2Vha0dDSGFu
ZGxlKTsKKworICAgIFdlYWtHQ0hhbmRsZVBvb2woKTsKKworICAgIFdlYWtHQ0hhbmRsZSogYWxs
b2NhdGUoSlNDZWxsKiBjZWxsKTsKKyAgICB2b2lkIGZyZWUoV2Vha0dDSGFuZGxlKik7CisKKyAg
ICBib29sIGlzRnVsbCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9lbnRyaWVzU2l6ZSA8IFdl
YWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzKTsKKyAgICAgICAgcmV0dXJuIG1fZW50cmll
c1NpemUgPT0gV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMgLSAxOworICAgIH0KKwor
ICAgIHZvaWQgdXBkYXRlKCk7CisKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGln
bmVkTWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplPiYpOworCitwcml2YXRlOgorICAg
IEhlYXAqIG1faGVhcDsKKyAgICB1bnNpZ25lZCBtX2VudHJpZXNTaXplOworICAgIHVuc2lnbmVk
IG1faW5pdGlhbEFsbG9jOworCisgICAgV2Vha0dDSGFuZGxlIG1fZW50cmllc1tXZWFrR0NIYW5k
bGVQb29sOjpudW1Qb29sRW50cmllc107Cit9OworCit9CisjZW5kaWYKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NQdHIuaAkocmV2aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdlYWtHQ1B0cl9oCiAKICNpbmNsdWRlICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJHQ0hh
bmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTM0LDIzICszNSwzNCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIEEgc21hcnQgcG9pbnRlciB3
aG9zZSBnZXQoKSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIGNlbGxzIGF3YWl0aW5nIGRlc3RydWN0
aW9uLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWtHQ1B0ciA6IE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKLSAgICBXZWFrR0NQdHIoKSA6IG1fcHRyKDApIHsgfQorICAgIFdlYWtHQ1B0
cigpCisgICAgICAgIDogbV9wdHIoMCkKKyAgICB7CisgICAgfQorCiAgICAgV2Vha0dDUHRyKFQq
IHB0cikgeyBhc3NpZ24ocHRyKTsgfQogCisgICAgfldlYWtHQ1B0cigpCisgICAgeworICAgICAg
ICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRyKTsKKyAg
ICB9CisKICAgICBUKiBnZXQoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3B0ciB8fCAh
SGVhcDo6aXNDZWxsTWFya2VkKG1fcHRyKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICByZXR1cm4gbV9wdHI7CisgICAgICAgIGlmIChtX3B0ciAmJiBtX3B0ci0+aXNWYWxpZFB0cigp
KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3B0ci0+cHRyKCkpOworICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjbGVhcihKU0NlbGwqIHB0cikK
KyAgICBib29sIGNsZWFyKEpTQ2VsbCogcCkKICAgICB7Ci0gICAgICAgIGlmIChwdHIgPT0gbV9w
dHIpIHsKLSAgICAgICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3B0ciB8fCBt
X3B0ci0+cHRyKCkgIT0gcCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBt
X3B0ci0+cG9vbCgpLT5mcmVlKG1fcHRyKTsKKyAgICAgICAgbV9wdHIgPSAwOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAq
Z2V0KCk7IH0KQEAgLTYyLDcgKzc0LDcgQEAgcHVibGljOgogI2lmIENPTVBJTEVSKFdJTlNDVykK
ICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KICNlbHNlCi0gICAg
dHlwZWRlZiBUKiBXZWFrR0NQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgIHR5cGVkZWYg
V2Vha0dDSGFuZGxlKiBXZWFrR0NQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOwogICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBnZXQoKSA/ICZXZWFrR0NQ
dHI6Om1fcHRyIDogMDsgfQogI2VuZGlmCiAKQEAgLTczLDE0ICs4NSwxNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbihUKiBwdHIpCisgICAgdm9pZCBhc3Np
Z24oSlNDZWxsKiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQocHRyKTsKLSAgICAgICAgSGVh
cDo6bWFya0NlbGwocHRyKTsKLSAgICAgICAgbV9wdHIgPSBwdHI7CisgICAgICAgIGlmIChtX3B0
cikKKyAgICAgICAgICAgIG1fcHRyLT5wdHIocHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9wdHIgPSBIZWFwOjpoZWFwKHB0ciktPmFkZFdlYWtHQ0hhbmRsZShwdHIpOwogICAgIH0K
IAotICAgIFQqIG1fcHRyOworICAgIFdlYWtHQ0hhbmRsZSogbV9wdHI7CiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtHQ1B0cjxUPiYgV2Vha0dDUHRyPFQ+OjpvcGVyYXRv
cj0oVCogb3B0cikK
</data>
<flag name="review"
          id="52031"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63644</attachid>
            <date>2010-08-05 15:20:33 -0700</date>
            <delta_ts>2010-08-05 15:31:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>24764</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0Nzg1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDgtMDUgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzMjA3CisKKyAgICAgICAgV2Vha0dDUHRyJ3Mgc2hvdWxkIGluc3RlYWQgb2YgZGly
ZWN0bHkgcG9pbnRpbmcgdG8gdGhlIEdDJ2Qgb2JqZWN0CisgICAgICAgIHNob3VsZCBiZSBkaXJl
Y3RlZCB0byBhbiBhcnJheSBvZiBwb2ludGVycyB0aGF0IGNhbiBiZSB1cGRhdGVkIGZvcgorICAg
ICAgICBtb3ZhYmxlIG9iamVjdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6
CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRsZXMpOgorICAgICAgICAoSlND
OjpXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjphZGRXZWFr
R0NIYW5kbGUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgIChKU0M6OkhlYXA6OndlYWtHQ0hhbmRsZVBvb2wp
OgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
V2Vha0dDSGFuZGxlOjpwb29sKToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6V2Vh
a0dDSGFuZGxlUG9vbCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6OmFsbG9jYXRl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6ZnJlZSk6CisgICAgICAgIChKU0M6
OldlYWtHQ0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyk6CisgICAgICAgICogcnVudGltZS9HQ0hh
bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1ZhbGlkUHRyKToK
KyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppc1B0cik6CisgICAgICAgIChKU0M6OldlYWtH
Q0hhbmRsZTo6aXNOZXh0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjppbnZhbGlkYXRl
KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpwdHIpOgorICAgICAgICAoSlNDOjpXZWFr
R0NIYW5kbGU6Om5leHQpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5kbGVQb29sOjppc0Z1bGwp
OgorICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDUHRyLmg6CisgICAgICAgIChKU0M6OldlYWtHQ1B0
cjo6V2Vha0dDUHRyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjp+V2Vha0dDUHRyKToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDUHRyOjpnZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OmNs
ZWFyKToKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjphc3NpZ24pOgorCiAyMDEwLTA4LTA1ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA2NDc4MykKKysr
IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcg
QEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAlydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBcCisJcnVudGltZS9HQ0hhbmRsZS5jcHAgXAogCXJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cCBcCiAJcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIFwKIAlydW50aW1lL0lkZW50aWZp
ZXIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NDc4MykKKysrIEph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNiArMjY4
LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZp
dHlDYWxsYmFjay5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxi
YWNrLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwIFwKKwlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
dGVyU2V0dGVyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBc
CiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcg
QEAgX19aTjNKU0MxMlN0cmluZ09iamVjdDI0Z2V0T3duUHJvcGVydHlEZQogX19aTjNKU0MxMlN0
cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFs
dWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0MxMlN0cmluZ09iamVjdDRpbmZvRQog
X19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFz
c1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTJXZWFrR0NI
YW5kbGU0cG9vbEV2CiBfX1pOM0pTQzEyanNOdW1iZXJDZWxsRVBOU185RXhlY1N0YXRlRWQKIF9f
Wk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CkBA
IC0xNzEsNiArMTcyLDcgQEAgX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0ds
bwogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJv
bFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9f
Wk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0
YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQorX19aTjNK
U0MxNldlYWtHQ0hhbmRsZVBvb2w0ZnJlZUVQTlNfMTJXZWFrR0NIYW5kbGVFCiBfX1pOM0pTQzE2
Y3JlYXRlUmFuZ2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0Mx
NnRocm93U3ludGF4RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2dG9VSW50MzJTbG93
Q2FzZUVkUmIKQEAgLTIwMSw2ICsyMDMsNyBAQCBfX1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENh
bGxGcmFtZUVSS05TCiBfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRp
b25FUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MzTmFORQogX19aTjNKU0M0SGVhcDE0cHJp
bWFyeUhlYXBFbmRFdgorX19aTjNKU0M0SGVhcDE1YWRkV2Vha0dDSGFuZGxlRVBOU182SlNDZWxs
RQogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0KIF9fWk4zSlNDNEhlYXAxNm9iamVj
dFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE2cHJpbWFyeUhlYXBCZWdpbkV2CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNyw4
IEBACiAgICAgICAgICAgICAncnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oJywKICAgICAgICAg
ICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAnLAogICAgICAgICAgICAgJ3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NIYW5kbGUu
Y3BwJywKKyAgICAgICAgICAgICdydW50aW1lL0dDSGFuZGxlLmgnLAogICAgICAgICAgICAgJ3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwJywKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDY0NzgzKQorKysgSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQw
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBc
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBcCisgICAgcnVudGltZS9HQ0hhbmRsZS5jcHAgXAogICAgIHJ1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAgICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3Bw
IFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MTIsNiArNTEyLDEyIEBACiAJCURE
MjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEyMDhEMUZG
MDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OwogCQlERDI3MjQ2OTEy
MDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3
IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlERDM3N0NCQzEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDM3N0NC
QjEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRERFODJBRDMxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
RTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ0
MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5k
bGUuY3BwICovOyB9OworCQlEREU4MkFENTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDEx
MjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJRERFODJBRDYxMjA5RDk1
NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLzsg
fTsKKwkJRERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ4MTIwOUQ5NTUwMDVDMTc1NiAv
KiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERGN0FCRDQxMUY2MEVEMjAwMTA4
RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5oICovOyB9OwogCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLzsgfTsKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA1OCw2ICsxMDY0LDggQEAKIAkJRDIxMjAy
MjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERDI3MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIwNzJDMTgwMDZB
MjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERTgyQUQxMTIwOUQ5NTUwMDVDMTc1
NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
Q0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERTgyQUQyMTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHQ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREY3QUJEMjExRjYw
RUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxi
YWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3OThE
MDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNCw2
ICsxNjMyLDggQEAKIAkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAogCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblBy
b3RvdHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggKi8sCisJCQkJRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxl
LmNwcCAqLywKKwkJCQlEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLywK
IAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJ
CQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJQkMy
NTdERUQwRTFGNTJFRDAwMTZCNkM5IC8qIEdsb2JhbEV2YWxGdW5jdGlvbi5jcHAgKi8sCkBAIC0x
OTEyLDYgKzE5MjIsNyBAQAogCQkJCTE0NDAwNUNDMEE1MzM4RjgwMDA1RjA2MSAvKiBOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDc0QTBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUREMjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlEREU4MkFENjEyMDlEOTU1MDA1
QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIxNCw2ICsyMjI1LDcgQEAK
IAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEREY3QUJENDExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlERDI3MjQ2OTEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRERFODJBRDgxMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0NzQsNiArMjQ4Niw3IEBA
CiAJCQkJMTQxMjExMzQwQTQ4Nzk1ODAwNDgwMjU1IC8qIG1pbmlkb20uYyBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDAwNjNGMEE1MzU5OEEwMDA1RjA2MSAvKiBOb2RlLmMgaW4gU291cmNlcyAqLywK
IAkJCQkxNDQwMDc0QjBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3QuYyBpbiBTb3VyY2VzICov
LAorCQkJCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI0ODIsNiArMjQ5NSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3Rh
cGkuYyBpbiBTb3VyY2VzICovLAorCQkJCURERTgyQUQ0MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NjEsNiArMjY3NSw3IEBACiAJCQkJODZEMDhE
NTMxMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2MjdFNUVCMTFGMTI4MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyog
R0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjY5LDYgKzI2ODQsNyBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkREMDgy
MkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJBRDMxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAs
OSBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogCiAgICAgZnJlZUJsb2NrcygpOwogCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIG1fd2Vha0dDSGFuZGxlUG9vbHNbaV0uZGVhbGxvY2F0ZSgpOworCiAjaWYgRU5BQkxF
KEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIGlmIChtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIp
IHsKICAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKG1fY3VycmVudFRocmVh
ZFJlZ2lzdHJhcik7CkBAIC05MDYsNiArOTA5LDM4IEBAIHZvaWQgSGVhcDo6bWFya1N0YWNrT2Jq
ZWN0c0NvbnNlcnZhdGl2ZWwKICNlbmRpZgogfQogCit2b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hh
bmRsZXMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBv
b2xzLnNpemUoKTsgKytpKQorICAgICAgICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsK
K30KKwordm9pZCBXZWFrR0NIYW5kbGVQb29sOjp1cGRhdGUoKQoreworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2VudHJpZXNbaV0uaXNWYWxpZFB0cigpKSB7CisgICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSBtX2VudHJpZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWNlbGwgfHwg
IUhlYXA6OmlzQ2VsbE1hcmtlZChjZWxsKSkKKyAgICAgICAgICAgICAgICBtX2VudHJpZXNbaV0u
aW52YWxpZGF0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitXZWFrR0NIYW5kbGUqIEhlYXA6
OmFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqIHB0cikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYgKCF3ZWFr
R0NIYW5kbGVQb29sKGkpLT5pc0Z1bGwoKSkKKyAgICAgICAgICAgIHJldHVybiB3ZWFrR0NIYW5k
bGVQb29sKGkpLT5hbGxvY2F0ZShwdHIpOworCisgICAgQVNTRVJUKFdlYWtHQ0hhbmRsZVBvb2w6
OnBvb2xTaXplID09IEJMT0NLX1NJWkUpOworCisgICAgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5k
bGVQb29sOjpwb29sU2l6ZT4gYWxsb2NhdGlvbiA9IG1fYmxvY2thbGxvY2F0b3IuYWxsb2NhdGUo
KTsKKyAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzLmFwcGVuZChhbGxvY2F0aW9uKTsKKworICAgIFdl
YWtHQ0hhbmRsZVBvb2wqIHBvb2wgPSBuZXcgKGFsbG9jYXRpb24pIFdlYWtHQ0hhbmRsZVBvb2wo
KTsKKyAgICByZXR1cm4gcG9vbC0+YWxsb2NhdGUocHRyKTsKK30KKwogdm9pZCBIZWFwOjpwcm90
ZWN0KEpTVmFsdWUgaykKIHsKICAgICBBU1NFUlQoayk7CkBAIC0xMDQyLDYgKzEwNzcsOCBAQCB2
b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgbWFya1N0YWNrLmRyYWluKCk7CiAgICAgbWFya1N0
YWNrLmNvbXBhY3QoKTsKIAorICAgIHVwZGF0ZVdlYWtHQ0hhbmRsZXMoKTsKKwogICAgIG1faGVh
cC5vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CiB9CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjQ3ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVm
aW5lIENvbGxlY3Rvcl9oCiAKICNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisj
aW5jbHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CkBAIC0xMzEsNiArMTMyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2VsbE1hcmtlZChjb25zdCBKU0NlbGwq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0NlbGwoSlNDZWxsKik7CiAKKyAgICAgICAgV2Vh
a0dDSGFuZGxlKiBhZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7CisKICAgICAgICAgdm9pZCBtYXJr
Q29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKICAg
ICAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgpIHsgaWYg
KCFtX21hcmtMaXN0U2V0KSBtX21hcmtMaXN0U2V0ID0gbmV3IEhhc2hTZXQ8TWFya2VkQXJndW1l
bnRCdWZmZXIqPjsgcmV0dXJuICptX21hcmtMaXN0U2V0OyB9CkBAIC0xNzIsMTEgKzE3NSwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRp
dmVseShNYXJrU3RhY2smLCBUaHJlYWQqKTsKICAgICAgICAgdm9pZCBtYXJrU3RhY2tPYmplY3Rz
Q29uc2VydmF0aXZlbHkoTWFya1N0YWNrJik7CiAKKyAgICAgICAgdm9pZCB1cGRhdGVXZWFrR0NI
YW5kbGVzKCk7CisgICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdlYWtHQ0hhbmRsZVBvb2woc2l6
ZV90IGluZGV4KTsKKwogICAgICAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+IFBy
b3RlY3RDb3VudFNldDsKIAogICAgICAgICBDb2xsZWN0b3JIZWFwIG1faGVhcDsKIAogICAgICAg
ICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CisgICAgICAgIFdURjo6VmVjdG9y
PEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+ID4gbV93ZWFrR0NIYW5k
bGVQb29sczsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFy
a0xpc3RTZXQ7CiAKQEAgLTMwMiw2ICszMDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1faGVhcC5uZXh0TnVtYmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdCkgKyAoQ0VMTF9T
SVpFIC8gMik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisKKyAgICBpbmxpbmUg
V2Vha0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFuZGxlUG9vbChzaXplX3QgaW5kZXgpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vha0dDSGFuZGxlUG9vbCo+KG1fd2Vh
a0dDSGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7CisgICAgfQogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvKiBDb2xsZWN0b3JfaCAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0hhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hh
bmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0hhbmRsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
V2Vha0dDSGFuZGxlUG9vbCogV2Vha0dDSGFuZGxlOjpwb29sKCkKK3sKKyAgICB1aW50cHRyX3Qg
cG9vbCA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgJiBXZWFrR0NIYW5kbGVQ
b29sOjpwb29sTWFzayk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0dDSGFuZGxl
UG9vbCo+KHBvb2wpOworfQorCitXZWFrR0NIYW5kbGVQb29sOjpXZWFrR0NIYW5kbGVQb29sKCkK
K3sKKyAgICBBU1NFUlQoc2l6ZW9mKFdlYWtHQ0hhbmRsZVBvb2wpIDw9IFdlYWtHQ0hhbmRsZVBv
b2w6OnBvb2xTaXplKTsKKyAgICBtX2VudHJpZXNTaXplID0gMDsKKyAgICBtX2luaXRpYWxBbGxv
YyA9IDE7CisgICAgbV9lbnRyaWVzWzBdLnNldE5leHRJbkZyZWVMaXN0KDApOworfQorCitXZWFr
R0NIYW5kbGUqIFdlYWtHQ0hhbmRsZVBvb2w6OmFsbG9jYXRlKEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBBU1NFUlQoY2VsbCk7CisgICAgQVNTRVJUKG1fZW50cmllc1swXS5pc05leHQoKSk7CisgICAg
dW5zaWduZWQgZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0uZ2V0TmV4dEluRnJlZUxpc3QoKTsKKyAg
ICBBU1NFUlQoZnJlZUxpc3QgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7Cisg
ICAgQVNTRVJUKG1fZW50cmllc1NpemUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmll
cyk7CisKKyAgICBpZiAobV9lbnRyaWVzU2l6ZSA9PSBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29s
RW50cmllcyAtIDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGZyZWVMaXN0KSB7Cisg
ICAgICAgIHVuc2lnbmVkIGkgPSBmcmVlTGlzdDsKKyAgICAgICAgZnJlZUxpc3QgPSBtX2VudHJp
ZXNbaV0uZ2V0TmV4dEluRnJlZUxpc3QoKTsKKyAgICAgICAgbV9lbnRyaWVzW2ldLnNldChjZWxs
KTsKKyAgICAgICAgbV9lbnRyaWVzWzBdLnNldE5leHRJbkZyZWVMaXN0KGZyZWVMaXN0KTsKKyAg
ICAgICAgKyttX2VudHJpZXNTaXplOworICAgICAgICByZXR1cm4gJm1fZW50cmllc1tpXTsKKyAg
ICB9CisKKyAgICBBU1NFUlQobV9pbml0aWFsQWxsb2MgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Q
b29sRW50cmllcyk7CisKKyAgICB1bnNpZ25lZCBpID0gbV9pbml0aWFsQWxsb2M7CisgICAgKytt
X2luaXRpYWxBbGxvYzsKKyAgICBtX2VudHJpZXNbaV0uc2V0KGNlbGwpOworICAgICsrbV9lbnRy
aWVzU2l6ZTsKKyAgICByZXR1cm4gJm1fZW50cmllc1tpXTsKKworfQorCit2b2lkIFdlYWtHQ0hh
bmRsZVBvb2w6OmZyZWUoV2Vha0dDSGFuZGxlKiBoYW5kbGUpCit7CisgICAgQVNTRVJUKGhhbmRs
ZS0+cG9vbCgpID09IHRoaXMpOworICAgIEFTU0VSVChtX2VudHJpZXNbMF0uaXNOZXh0KCkpOwor
ICAgIHVuc2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLmdldE5leHRJbkZyZWVMaXN0KCk7
CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXMp
OworICAgIGhhbmRsZS0+c2V0TmV4dEluRnJlZUxpc3QoZnJlZUxpc3QpOworICAgIG1fZW50cmll
c1swXS5zZXROZXh0SW5GcmVlTGlzdChoYW5kbGUgLSBtX2VudHJpZXMpOworICAgIC0tbV9lbnRy
aWVzU2l6ZTsKK30KKwordm9pZCogV2Vha0dDSGFuZGxlUG9vbDo6b3BlcmF0b3IgbmV3KHNpemVf
dCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4mIGFsbG9jYXRpb24p
Cit7CisgICAgcmV0dXJuIGFsbG9jYXRpb24uYmFzZSgpOworfQorCit9CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0hhbmRsZS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0hhbmRsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgR0NIYW5kbGVfaAorI2RlZmluZSBHQ0hhbmRsZV9oCisKKyNpbmNsdWRlICJBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwOwor
Y2xhc3MgSlNDZWxsOworY2xhc3MgV2Vha0dDSGFuZGxlOworY2xhc3MgV2Vha0dDSGFuZGxlUG9v
bDsKKworY2xhc3MgV2Vha0dDSGFuZGxlIHsKKyAgICBmcmllbmQgY2xhc3MgV2Vha0dDSGFuZGxl
UG9vbDsKKworcHVibGljOgorICAgIC8vIEJlY2F1c2UgSlNDZWxsIG9iamVjdHMgYXJlIGFsaWdu
ZWQsIHdlIGNhbiB1c2UgdGhlIGxvd2VyIHR3byBiaXRzIGFzCisgICAgLy8gc3RhdHVzIGZsYWdz
LiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGlzIHNldCB3aGVuIHRoZSBoYW5kbGUgaXMgbm90
IGEKKyAgICAvLyBwb2ludGVyLCBpLmUuIHdoZW4gaXQncyB1c2VkIGFzIGEgb2Zmc2V0IGZvciB0
aGUgZnJlZSBsaXN0IGluCisgICAgLy8gV2Vha0dDSGFuZGxlUG9vbC4gVGhlIHNlY29uZCBsZWFz
dCBzaWduaWZpY2FudCBiaXQgaXMgc2V0IHdoZW4gdGhlIG9iamVjdAorICAgIC8vIHRoZSBwb2lu
dGVyIGNvcnJlc3BvbmRzIHRvIGhhcyBiZWVuIGRlbGV0ZWQgYnkgYSBnYXJiYWdlIGNvbGxlY3Rp
b24KKworICAgIGJvb2wgaXNWYWxpZFB0cigpIHsgcmV0dXJuICEobV9wdHIgJiAzKTsgfQorICAg
IGJvb2wgaXNQdHIoKSB7IHJldHVybiAhKG1fcHRyICYgMSk7IH0KKyAgICBib29sIGlzTmV4dCgp
IHsgcmV0dXJuIChtX3B0ciAmIDMpID09IDE7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZFB0cigpKTsKKyAgICAgICAgbV9wdHIgfD0gMjsK
KyAgICB9CisKKyAgICBKU0NlbGwqIGdldCgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNQdHIo
KSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KG1fcHRyICYgfjMp
OworICAgIH0KKworICAgIHZvaWQgc2V0KEpTQ2VsbCogcCkKKyAgICB7CisgICAgICAgIG1fcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOworICAgICAgICBBU1NFUlQoaXNQdHIo
KSk7CisgICAgfQorCisgICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCgpOworCitwcml2YXRlOgor
ICAgIHVpbnRwdHJfdCBnZXROZXh0SW5GcmVlTGlzdCgpCisgICAgeworICAgICAgICBBU1NFUlQo
aXNOZXh0KCkpOworICAgICAgICByZXR1cm4gbV9wdHIgPj4gMjsKKyAgICB9CisKKyAgICB2b2lk
IHNldE5leHRJbkZyZWVMaXN0KHVpbnRwdHJfdCBuKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSAo
biA8PCAyKSB8IDE7CisgICAgICAgIEFTU0VSVChpc05leHQoKSk7CisgICAgfQorCisgICAgdWlu
dHB0cl90IG1fcHRyOworfTsKKworY2xhc3MgV2Vha0dDSGFuZGxlUG9vbCB7CitwdWJsaWM6Cisj
aWYgT1MoV0lOQ0UpIHx8IE9TKFNZTUJJQU4pCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29s
U2l6ZSA9IDY0ICogMTAyNDsgLy8gNjRrCisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cG9vbFNpemUgPSAyNTYgKiAxMDI0OyAvLyAyNTZrCisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHBvb2xNYXNrID0gfihwb29sU2l6ZSAtIDEpOworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbnVtUG9vbEVudHJpZXMgPSAocG9vbFNpemUgLSBzaXplb2YoSGVhcCopIC0gMyAqIHNpemVv
Zih1bnNpZ25lZCkpIC8gc2l6ZW9mKFdlYWtHQ0hhbmRsZSk7CisKKyAgICBXZWFrR0NIYW5kbGVQ
b29sKCk7CisKKyAgICBXZWFrR0NIYW5kbGUqIGFsbG9jYXRlKEpTQ2VsbCogY2VsbCk7CisgICAg
dm9pZCBmcmVlKFdlYWtHQ0hhbmRsZSopOworCisgICAgYm9vbCBpc0Z1bGwoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fZW50cmllc1NpemUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50
cmllcyk7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6
Om51bVBvb2xFbnRyaWVzIC0gMTsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29s
Ojpwb29sU2l6ZT4mKTsKKworcHJpdmF0ZToKKyAgICBIZWFwKiBtX2hlYXA7CisgICAgdW5zaWdu
ZWQgbV9lbnRyaWVzU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxBbGxvYzsKKworICAgIFdl
YWtHQ0hhbmRsZSBtX2VudHJpZXNbV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXNdOwor
fTsKKworfQorI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgJKHJldmlz
aW9uIDY0NzgzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWFrR0NQdHJfaAogCiAjaW5jbHVk
ZSAiQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNCwyMyArMzUsMzQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAvLyBBIHNtYXJ0IHBvaW50ZXIgd2hvc2UgZ2V0KCkgZnVuY3Rpb24gcmV0dXJu
cyAwIGZvciBjZWxscyBhd2FpdGluZyBkZXN0cnVjdGlvbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBXZWFrR0NQdHIgOiBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgV2Vha0dDUHRy
KCkgOiBtX3B0cigwKSB7IH0KKyAgICBXZWFrR0NQdHIoKQorICAgICAgICA6IG1fcHRyKDApCisg
ICAgeworICAgIH0KKwogICAgIFdlYWtHQ1B0cihUKiBwdHIpIHsgYXNzaWduKHB0cik7IH0KIAor
ICAgIH5XZWFrR0NQdHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyKQorICAgICAgICAgICAg
bV9wdHItPnBvb2woKS0+ZnJlZShtX3B0cik7CisgICAgfQorCiAgICAgVCogZ2V0KCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmICghbV9wdHIgfHwgIUhlYXA6OmlzQ2VsbE1hcmtlZChtX3B0cikp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1fcHRyOworICAgICAgICBp
ZiAobV9wdHIgJiYgbV9wdHItPmlzVmFsaWRQdHIoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUKj4obV9wdHItPmdldCgpKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IAotICAgIGJvb2wgY2xlYXIoSlNDZWxsKiBwdHIpCisgICAgYm9vbCBjbGVhcihKU0NlbGwqIHAp
CiAgICAgewotICAgICAgICBpZiAocHRyID09IG1fcHRyKSB7Ci0gICAgICAgICAgICBtX3B0ciA9
IDA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghbV9wdHIgfHwgbV9wdHItPmdldCgpICE9IHApCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZShtX3B0cik7
CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CkBAIC02Miw3ICs3NCw3IEBA
IHB1YmxpYzoKICNpZiBDT01QSUxFUihXSU5TQ1cpCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyOyB9CiAjZWxzZQotICAgIHR5cGVkZWYgVCogV2Vha0dDUHRyOjoqVW5z
cGVjaWZpZWRCb29sVHlwZTsKKyAgICB0eXBlZGVmIFdlYWtHQ0hhbmRsZSogV2Vha0dDUHRyOjoq
VW5zcGVjaWZpZWRCb29sVHlwZTsKICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkg
Y29uc3QgeyByZXR1cm4gZ2V0KCkgPyAmV2Vha0dDUHRyOjptX3B0ciA6IDA7IH0KICNlbmRpZgog
CkBAIC03MywxNCArODUsMTYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBhc3NpZ24oVCogcHRyKQorICAgIHZvaWQgYXNzaWduKEpTQ2VsbCogcHRyKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHB0cik7Ci0gICAgICAgIEhlYXA6Om1hcmtDZWxsKHB0cik7Ci0gICAgICAg
IG1fcHRyID0gcHRyOworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+c2V0
KHB0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHRyID0gSGVhcDo6aGVhcChwdHIp
LT5hZGRXZWFrR0NIYW5kbGUocHRyKTsKICAgICB9CiAKLSAgICBUKiBtX3B0cjsKKyAgICBXZWFr
R0NIYW5kbGUqIG1fcHRyOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
R0NQdHI8VD4mIFdlYWtHQ1B0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCkBAIC0xMjksNyArMTQz
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZQogICAgIHJldHVy
biBXZWFrR0NQdHI8VD4oY29uc3RfY2FzdDxUKj4ocC5nZXQoKSkpOyAKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgV2Vha0dDUHRyPFQ+JiBwKQordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXQoY29uc3QgV2Vha0dDUHRyPFQ+JiBwKQog
ewogICAgIHJldHVybiBwLmdldCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63646</attachid>
            <date>2010-08-05 15:31:04 -0700</date>
            <delta_ts>2010-08-06 07:56:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>weakGCPtr.patch</filename>
            <type>text/plain</type>
            <size>27422</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NzkwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDgtMDUgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzMjA3CisKKyAgICAgICAgV2Vha0dDUHRyJ3Mgc2hvdWxkIGluc3RlYWQgb2YgZGly
ZWN0bHkgcG9pbnRpbmcgdG8gdGhlIEdDJ2Qgb2JqZWN0CisgICAgICAgIHNob3VsZCBiZSBkaXJl
Y3RlZCB0byBhbiBhcnJheSBvZiBwb2ludGVycyB0aGF0IGNhbiBiZSB1cGRhdGVkIGZvcgorICAg
ICAgICBtb3ZhYmxlIG9iamVjdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6
CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpIZWFw
OjpmcmVlQmxvY2spOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVXZWFrR0NIYW5kbGVzKToK
KyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlUG9vbDo6dXBkYXRlKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6YWRkV2Vha0dDSGFuZGxlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToK
KyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5oOgorICAgICAgICAoSlNDOjpIZWFwOjp3ZWFr
R0NIYW5kbGVQb29sKToKKyAgICAgICAgKiBydW50aW1lL0dDSGFuZGxlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6cG9vbCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hh
bmRsZVBvb2w6OldlYWtHQ0hhbmRsZVBvb2wpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5kbGVQ
b29sOjphbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6OmZyZWUpOgor
ICAgICAgICAoSlNDOjpXZWFrR0NIYW5kbGVQb29sOjpvcGVyYXRvciBuZXcpOgorICAgICAgICAq
IHJ1bnRpbWUvR0NIYW5kbGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6
aXNWYWxpZFB0cik6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6aXNQdHIpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NIYW5kbGU6OmlzTmV4dCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRs
ZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZTo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpzZXQpOgorICAgICAgICAoSlNDOjpXZWFrR0NIYW5kbGU6
OmdldE5leHRJbkZyZWVMaXN0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDSGFuZGxlOjpzZXROZXh0
SW5GcmVlTGlzdCk6CisgICAgICAgIChKU0M6OldlYWtHQ0hhbmRsZVBvb2w6OmlzRnVsbCk6Cisg
ICAgICAgICogcnVudGltZS9XZWFrR0NQdHIuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDUHRyOjpX
ZWFrR0NQdHIpOgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6On5XZWFrR0NQdHIpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NQdHI6OmdldCk6CisgICAgICAgIChKU0M6OldlYWtHQ1B0cjo6Y2xlYXIp
OgorICAgICAgICAoSlNDOjpXZWFrR0NQdHI6OmFzc2lnbik6CisgICAgICAgIChKU0M6OmdldCk6
CisKIDIwMTAtMDgtMDUgIE5hdGhhbiBMYXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHJldmlz
aW9uIDY0NzkwKQorKysgSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpA
QCAtOTYsNiArOTYsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gXAogCXJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgXAogCXJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAogCXJ1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIFwKKwlydW50aW1lL0dDSGFuZGxlLmNwcCBcCiAJcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwIFwKIAlydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXAogCXJ1
bnRpbWUvSWRlbnRpZmllci5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDY0NzkwKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2OCw2ICsyNjgsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5j
cHAgXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaCBcCiAJSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlv
bi5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjQ3OTAp
CisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw2ICsxNDEsNyBAQCBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURl
CiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEyU3RyaW5n
T2JqZWN0NGluZm9FCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFTjNX
VEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdVU3RyaW5nRQorX19a
TjNKU0MxMldlYWtHQ0hhbmRsZTRwb29sRXYKIF9fWk4zSlNDMTJqc051bWJlckNlbGxFUE5TXzlF
eGVjU3RhdGVFZAogX19aTjNKU0MxMm5vbklubGluZU5hTkV2CiBfX1pOM0pTQzEzU2FtcGxpbmdG
bGFnczRzdG9wRXYKQEAgLTE3MSw2ICsxNzIsNyBAQCBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlv
bkMyRVBOU18xMkpTR2xvCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJvcGVy
dHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJpYWJs
ZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlE
ZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3BlcnR5TmFt
ZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCitfX1pOM0pTQzE2V2Vha0dDSGFuZGxlUG9vbDRmcmVlRVBOU18xMldlYWtHQ0hhbmRs
ZUUKIF9fWk4zSlNDMTZjcmVhdGVSYW5nZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJp
bmdFCiBfX1pOM0pTQzE2dGhyb3dTeW50YXhFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlND
MTZ0b1VJbnQzMlNsb3dDYXNlRWRSYgpAQCAtMjAxLDYgKzIwMyw3IEBAIF9fWk4zSlNDMjVldmFs
dWF0ZUluR2xvYmFsQ2FsbEZyYW1lRVJLTlMKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzNOYU5FCiBfX1pO
M0pTQzRIZWFwMTRwcmltYXJ5SGVhcEVuZEV2CitfX1pOM0pTQzRIZWFwMTVhZGRXZWFrR0NIYW5k
bGVFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzRIZWFwMTVyZWNvcmRFeHRyYUNvc3RFbQogX19aTjNK
U0M0SGVhcDE2b2JqZWN0VHlwZUNvdW50c0V2CiBfX1pOM0pTQzRIZWFwMTZwcmltYXJ5SGVhcEJl
Z2luRXYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gNjQ3OTAp
CisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTcsNiArMjE3LDggQEAKICAgICAgICAgICAgICdydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCcsCiAgICAg
ICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCcsCisgICAgICAgICAgICAncnVu
dGltZS9HQ0hhbmRsZS5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NIYW5kbGUuaCcsCiAg
ICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwJywKICAgICAgICAgICAgICdydW50
aW1lL0dldHRlclNldHRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL0dsb2JhbEV2YWxGdW5j
dGlvbi5jcHAnLApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gNjQ3
OTApCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTE0MCw2ICsxNDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCiAgICAg
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKyAgICBydW50aW1lL0dDSGFuZGxlLmNw
cCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAgICBydW50aW1lL0dsb2JhbEV2
YWxGdW5jdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApJbmRleDogSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA2NDc5MCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMiw2ICs1
MTIsMTIgQEAKIAkJREQyNzI0NjgxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
MjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07
CiAJCUREMjcyNDY5MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEy
MDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUREMzc3Q0JDMTIwNzJDMTgwMDZB
MjUxNyAvKiBCaXRtYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEREMzc3Q0JCMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEREU4MkFEMzEyMDlEOTU1MDA1
QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsg
fTsKKwkJRERFODJBRDQxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVD
MTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87IH07CisJCURERTgyQUQ1MTIwOUQ5NTUwMDVDMTc1NiAv
KiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEREU4MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OworCQlE
REU4MkFENjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBH
Q0hhbmRsZS5oICovOyB9OworCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJB
RDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKKwkJRERFODJBRDgxMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEREY3QUJE
NDExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREY3QUJEMjExRjYwRUQyMDAxMDhFMzYg
LyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IH07CiAJCURERjdBQkQ1MTFGNjBFRDIwMDEwOEUz
NiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwICovOyB9OwogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3Bh
cXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDU4LDYgKzEwNjQs
OCBAQAogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQzNzdD
QkIxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaXRtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRERFODJBRDEx
MjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdDSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RERFODJBRDIxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdDSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2tDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
Q0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
MUQ1MTc1MEIyRTc5OEQwMDU2QzE4OCAvKiBTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjI0LDYgKzE2MzIsOCBAQAogCQkJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAv
KiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3
IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYw
RjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlEREU4MkFEMTEyMDlEOTU1MDA1QzE3
NTYgLyogR0NIYW5kbGUuY3BwICovLAorCQkJCURERTgyQUQyMTIwOUQ5NTUwMDVDMTc1NiAvKiBH
Q0hhbmRsZS5oICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0
ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIu
aCAqLywKIAkJCQlCQzI1N0RFRDBFMUY1MkVEMDAxNkI2QzkgLyogR2xvYmFsRXZhbEZ1bmN0aW9u
LmNwcCAqLywKQEAgLTE5MTIsNiArMTkyMiw3IEBACiAJCQkJMTQ0MDA1Q0MwQTUzMzhGODAwMDVG
MDYxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAwNzRBMEE1MzZDQzIwMDA1RjA2
MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQyNzI0NjgxMjA4RDFGRjAwRjlB
QkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURERTgy
QUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjE0
LDYgKzIyMjUsNyBAQAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUREMjcyNDY5MTIwOEQxRkYwMEY5
QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlEREU4
MkFEODEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ3
NCw2ICsyNDg2LDcgQEAKIAkJCQkxNDEyMTEzNDBBNDg3OTU4MDA0ODAyNTUgLyogbWluaWRvbS5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MDA2M0YwQTUzNTk4QTAwMDVGMDYxIC8qIE5vZGUuYyBp
biBTb3VyY2VzICovLAogCQkJCTE0NDAwNzRCMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5j
IGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJBRDUxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ4Miw2ICsyNDk1LDcgQEAKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAw
NUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJBRDQxMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY2MSw2ICsyNjc1LDcg
QEAKIAkJCQk4NkQwOEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYyN0U1RUIxMUYxMjgxOTAwQTMxM0I1
IC8qIFBhZ2VBbGxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURERTgyQUQ3MTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NjksNiArMjY4
NCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJOTMyRjVCREQwODIyQTFDNzAwNzM2OTc1IC8qIGpzYy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlEREU4MkFEMzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2NDc5MCkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTcwLDYgKzE3MCw5IEBAIHZvaWQgSGVhcDo6ZGVzdHJveSgpCiAKICAgICBmcmVlQmxvY2tz
KCk7CiAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29scy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV93ZWFrR0NIYW5kbGVQb29sc1tpXS5kZWFsbG9jYXRlKCk7
CisKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgaWYgKG1fY3VycmVudFRo
cmVhZFJlZ2lzdHJhcikgewogICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9kZWxldGUo
bV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKTsKQEAgLTE4OSw3ICsxOTIsNyBAQCB2b2lkIEhlYXA6
OmRlc3Ryb3koKQogCiBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6OmFsbG9jYXRl
QmxvY2soKQogewotICAgIEFsaWduZWRCbG9jayBhbGxvY2F0aW9uID0gbV9ibG9ja2FsbG9jYXRv
ci5hbGxvY2F0ZSgpOworICAgIEFsaWduZWRDb2xsZWN0b3JCbG9jayBhbGxvY2F0aW9uID0gbV9i
bG9ja2FsbG9jYXRvci5hbGxvY2F0ZSgpOwogICAgIENvbGxlY3RvckJsb2NrKiBibG9jayA9IHN0
YXRpY19jYXN0PENvbGxlY3RvckJsb2NrKj4oYWxsb2NhdGlvbi5iYXNlKCkpOwogICAgIGlmICgh
YmxvY2spCiAgICAgICAgIENSQVNIKCk7CkBAIC0yMDcsMTIgKzIxMCwxMiBAQCBORVZFUl9JTkxJ
TkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6OmFsbG9jCiAKICAgICBzaXplX3QgbnVtQmxvY2tzID0g
bV9oZWFwLm51bUJsb2NrczsKICAgICBpZiAobV9oZWFwLnVzZWRCbG9ja3MgPT0gbnVtQmxvY2tz
KSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4TnVtQmxvY2tzID0gVUxPTkdfTUFY
IC8gc2l6ZW9mKEFsaWduZWRCbG9jaykgLyBHUk9XVEhfRkFDVE9SOworICAgICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heE51bUJsb2NrcyA9IFVMT05HX01BWCAvIHNpemVvZihBbGlnbmVkQ29s
bGVjdG9yQmxvY2spIC8gR1JPV1RIX0ZBQ1RPUjsKICAgICAgICAgaWYgKG51bUJsb2NrcyA+IG1h
eE51bUJsb2NrcykKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIG51bUJsb2NrcyA9IG1h
eChNSU5fQVJSQVlfU0laRSwgbnVtQmxvY2tzICogR1JPV1RIX0ZBQ1RPUik7CiAgICAgICAgIG1f
aGVhcC5udW1CbG9ja3MgPSBudW1CbG9ja3M7Ci0gICAgICAgIG1faGVhcC5ibG9ja3MgPSBzdGF0
aWNfY2FzdDxBbGlnbmVkQmxvY2sqPihmYXN0UmVhbGxvYyhtX2hlYXAuYmxvY2tzLCBudW1CbG9j
a3MgKiBzaXplb2YoQWxpZ25lZEJsb2NrKSkpOworICAgICAgICBtX2hlYXAuYmxvY2tzID0gc3Rh
dGljX2Nhc3Q8QWxpZ25lZENvbGxlY3RvckJsb2NrKj4oZmFzdFJlYWxsb2MobV9oZWFwLmJsb2Nr
cywgbnVtQmxvY2tzICogc2l6ZW9mKEFsaWduZWRDb2xsZWN0b3JCbG9jaykpKTsKICAgICB9CiAg
ICAgbV9oZWFwLmJsb2Nrc1ttX2hlYXAudXNlZEJsb2NrcysrXSA9IGFsbG9jYXRpb247CiAKQEAg
LTIzNSw3ICsyMzgsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpmcmVlQmxvY2soc2l6ZV90
CiAKICAgICBpZiAobV9oZWFwLm51bUJsb2NrcyA+IE1JTl9BUlJBWV9TSVpFICYmIG1faGVhcC51
c2VkQmxvY2tzIDwgbV9oZWFwLm51bUJsb2NrcyAvIExPV19XQVRFUl9GQUNUT1IpIHsKICAgICAg
ICAgbV9oZWFwLm51bUJsb2NrcyA9IG1faGVhcC5udW1CbG9ja3MgLyBHUk9XVEhfRkFDVE9SOyAK
LSAgICAgICAgbV9oZWFwLmJsb2NrcyA9IHN0YXRpY19jYXN0PEFsaWduZWRCbG9jayo+KGZhc3RS
ZWFsbG9jKG1faGVhcC5ibG9ja3MsIG1faGVhcC5udW1CbG9ja3MgKiBzaXplb2YoQWxpZ25lZEJs
b2NrKSkpOworICAgICAgICBtX2hlYXAuYmxvY2tzID0gc3RhdGljX2Nhc3Q8QWxpZ25lZENvbGxl
Y3RvckJsb2NrKj4oZmFzdFJlYWxsb2MobV9oZWFwLmJsb2NrcywgbV9oZWFwLm51bUJsb2NrcyAq
IHNpemVvZihBbGlnbmVkQ29sbGVjdG9yQmxvY2spKSk7CiAgICAgfQogfQogCkBAIC05MDYsNiAr
OTA5LDM2IEBAIHZvaWQgSGVhcDo6bWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWwKICNlbmRp
ZgogfQogCit2b2lkIEhlYXA6OnVwZGF0ZVdlYWtHQ0hhbmRsZXMoKQoreworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQorICAgICAg
ICB3ZWFrR0NIYW5kbGVQb29sKGkpLT51cGRhdGUoKTsKK30KKwordm9pZCBXZWFrR0NIYW5kbGVQ
b29sOjp1cGRhdGUoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBXZWFrR0NIYW5k
bGVQb29sOjpudW1Qb29sRW50cmllczsgKytpKSB7CisgICAgICAgIGlmIChtX2VudHJpZXNbaV0u
aXNWYWxpZFB0cigpKSB7CisgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBtX2VudHJpZXNbaV0u
Z2V0KCk7CisgICAgICAgICAgICBpZiAoIWNlbGwgfHwgIUhlYXA6OmlzQ2VsbE1hcmtlZChjZWxs
KSkKKyAgICAgICAgICAgICAgICBtX2VudHJpZXNbaV0uaW52YWxpZGF0ZSgpOworICAgICAgICB9
CisgICAgfQorfQorCitXZWFrR0NIYW5kbGUqIEhlYXA6OmFkZFdlYWtHQ0hhbmRsZShKU0NlbGwq
IHB0cikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV93ZWFrR0NIYW5kbGVQb29s
cy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYgKCF3ZWFrR0NIYW5kbGVQb29sKGkpLT5pc0Z1bGwo
KSkKKyAgICAgICAgICAgIHJldHVybiB3ZWFrR0NIYW5kbGVQb29sKGkpLT5hbGxvY2F0ZShwdHIp
OworCisgICAgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4gYWxsb2Nh
dGlvbiA9IG1fd2Vha0dDSGFuZGxlUG9vbEFsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIG1fd2Vh
a0dDSGFuZGxlUG9vbHMuYXBwZW5kKGFsbG9jYXRpb24pOworCisgICAgV2Vha0dDSGFuZGxlUG9v
bCogcG9vbCA9IG5ldyAoYWxsb2NhdGlvbikgV2Vha0dDSGFuZGxlUG9vbCgpOworICAgIHJldHVy
biBwb29sLT5hbGxvY2F0ZShwdHIpOworfQorCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBr
KQogewogICAgIEFTU0VSVChrKTsKQEAgLTEwNDIsNiArMTA3NSw4IEBAIHZvaWQgSGVhcDo6bWFy
a1Jvb3RzKCkKICAgICBtYXJrU3RhY2suZHJhaW4oKTsKICAgICBtYXJrU3RhY2suY29tcGFjdCgp
OwogCisgICAgdXBkYXRlV2Vha0dDSGFuZGxlcygpOworCiAgICAgbV9oZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5oCShyZXZpc2lvbiA2NDc5MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgQ29sbGVjdG9y
X2gKIAogI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJHQ0hh
bmRsZS5oIgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi9CaXRtYXAuaD4KQEAgLTYyLDEzICs2MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjb25zdCBzaXplX3QgQkxPQ0tfU0laRSA9IDI1NiAqIDEwMjQ7IC8vIDI1NmsKICNlbmRpZgog
Ci0gICAgdHlwZWRlZiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPEJMT0NLX1NJWkU+IEFsaWduZWRB
bGxvY2F0b3I7Ci0gICAgdHlwZWRlZiBBbGlnbmVkTWVtb3J5PEJMT0NLX1NJWkU+IEFsaWduZWRC
bG9jazsKKyAgICB0eXBlZGVmIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8QkxPQ0tfU0laRT4gQ29s
bGVjdG9yQmxvY2tBbGxvY2F0b3I7CisgICAgdHlwZWRlZiBBbGlnbmVkTWVtb3J5PEJMT0NLX1NJ
WkU+IEFsaWduZWRDb2xsZWN0b3JCbG9jazsKIAogICAgIHN0cnVjdCBDb2xsZWN0b3JIZWFwIHsK
ICAgICAgICAgc2l6ZV90IG5leHRCbG9jazsKICAgICAgICAgc2l6ZV90IG5leHRDZWxsOwotICAg
ICAgICBBbGlnbmVkQmxvY2sqIGJsb2NrczsKKyAgICAgICAgQWxpZ25lZENvbGxlY3RvckJsb2Nr
KiBibG9ja3M7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBuZXh0TnVtYmVyOwogCkBAIC0xMzEs
NiArMTMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGlzQ2VsbE1h
cmtlZChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0NlbGwoSlNDZWxs
Kik7CiAKKyAgICAgICAgV2Vha0dDSGFuZGxlKiBhZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7CisK
ICAgICAgICAgdm9pZCBtYXJrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiwgdm9pZCogc3RhcnQs
IHZvaWQqIGVuZCk7CiAKICAgICAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBt
YXJrTGlzdFNldCgpIHsgaWYgKCFtX21hcmtMaXN0U2V0KSBtX21hcmtMaXN0U2V0ID0gbmV3IEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPjsgcmV0dXJuICptX21hcmtMaXN0U2V0OyB9CkBA
IC0xNzIsMTEgKzE3NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrT3Ro
ZXJUaHJlYWRDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smLCBUaHJlYWQqKTsKICAgICAgICAgdm9p
ZCBtYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJik7CiAKKyAgICAgICAg
dm9pZCB1cGRhdGVXZWFrR0NIYW5kbGVzKCk7CisgICAgICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHdl
YWtHQ0hhbmRsZVBvb2woc2l6ZV90IGluZGV4KTsKKwogICAgICAgICB0eXBlZGVmIEhhc2hDb3Vu
dGVkU2V0PEpTQ2VsbCo+IFByb3RlY3RDb3VudFNldDsKIAogICAgICAgICBDb2xsZWN0b3JIZWFw
IG1faGVhcDsKIAogICAgICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7Cisg
ICAgICAgIFdURjo6VmVjdG9yPEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNp
emU+ID4gbV93ZWFrR0NIYW5kbGVQb29sczsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CiAKQEAgLTE5NCw3ICsyMDEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIC8vIEFsbG9jYXRlcyBjb2xsZWN0b3IgYmxvY2tz
IHdpdGggY29ycmVjdCBhbGlnbm1lbnQKLSAgICAgICAgQWxpZ25lZEFsbG9jYXRvciBtX2Jsb2Nr
YWxsb2NhdG9yOyAKKyAgICAgICAgQ29sbGVjdG9yQmxvY2tBbGxvY2F0b3IgbV9ibG9ja2FsbG9j
YXRvcjsgCisgICAgICAgIFdlYWtHQ0hhbmRsZVBvb2w6OkFsbG9jYXRvciBtX3dlYWtHQ0hhbmRs
ZVBvb2xBbGxvY2F0b3I7IAogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2Jh
bERhdGE7CiAgICAgfTsKQEAgLTMwMiw2ICszMTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1faGVhcC5uZXh0TnVtYmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdCkgKyAoQ0VM
TF9TSVpFIC8gMik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisKKyAgICBpbmxp
bmUgV2Vha0dDSGFuZGxlUG9vbCogSGVhcDo6d2Vha0dDSGFuZGxlUG9vbChzaXplX3QgaW5kZXgp
CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vha0dDSGFuZGxlUG9vbCo+KG1f
d2Vha0dDSGFuZGxlUG9vbHNbaW5kZXhdLmJhc2UoKSk7CisgICAgfQogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvKiBDb2xsZWN0b3JfaCAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0hhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0hhbmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFu
ZGxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0hhbmRsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworV2Vha0dDSGFuZGxlUG9vbCogV2Vha0dDSGFuZGxlOjpwb29sKCkKK3sKKyAgICB1aW50cHRy
X3QgcG9vbCA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgJiBXZWFrR0NIYW5k
bGVQb29sOjpwb29sTWFzayk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0dDSGFu
ZGxlUG9vbCo+KHBvb2wpOworfQorCitXZWFrR0NIYW5kbGVQb29sOjpXZWFrR0NIYW5kbGVQb29s
KCkKK3sKKyAgICBBU1NFUlQoc2l6ZW9mKFdlYWtHQ0hhbmRsZVBvb2wpIDw9IFdlYWtHQ0hhbmRs
ZVBvb2w6OnBvb2xTaXplKTsKKyAgICBtX2VudHJpZXNTaXplID0gMDsKKyAgICBtX2luaXRpYWxB
bGxvYyA9IDE7CisgICAgbV9lbnRyaWVzWzBdLnNldE5leHRJbkZyZWVMaXN0KDApOworfQorCitX
ZWFrR0NIYW5kbGUqIFdlYWtHQ0hhbmRsZVBvb2w6OmFsbG9jYXRlKEpTQ2VsbCogY2VsbCkKK3sK
KyAgICBBU1NFUlQoY2VsbCk7CisgICAgQVNTRVJUKG1fZW50cmllc1swXS5pc05leHQoKSk7Cisg
ICAgdW5zaWduZWQgZnJlZUxpc3QgPSBtX2VudHJpZXNbMF0uZ2V0TmV4dEluRnJlZUxpc3QoKTsK
KyAgICBBU1NFUlQoZnJlZUxpc3QgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7
CisgICAgQVNTRVJUKG1fZW50cmllc1NpemUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50
cmllcyk7CisKKyAgICBpZiAobV9lbnRyaWVzU2l6ZSA9PSBXZWFrR0NIYW5kbGVQb29sOjpudW1Q
b29sRW50cmllcyAtIDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGZyZWVMaXN0KSB7
CisgICAgICAgIHVuc2lnbmVkIGkgPSBmcmVlTGlzdDsKKyAgICAgICAgZnJlZUxpc3QgPSBtX2Vu
dHJpZXNbaV0uZ2V0TmV4dEluRnJlZUxpc3QoKTsKKyAgICAgICAgbV9lbnRyaWVzW2ldLnNldChj
ZWxsKTsKKyAgICAgICAgbV9lbnRyaWVzWzBdLnNldE5leHRJbkZyZWVMaXN0KGZyZWVMaXN0KTsK
KyAgICAgICAgKyttX2VudHJpZXNTaXplOworICAgICAgICByZXR1cm4gJm1fZW50cmllc1tpXTsK
KyAgICB9CisKKyAgICBBU1NFUlQobV9pbml0aWFsQWxsb2MgPCBXZWFrR0NIYW5kbGVQb29sOjpu
dW1Qb29sRW50cmllcyk7CisKKyAgICB1bnNpZ25lZCBpID0gbV9pbml0aWFsQWxsb2M7CisgICAg
KyttX2luaXRpYWxBbGxvYzsKKyAgICBtX2VudHJpZXNbaV0uc2V0KGNlbGwpOworICAgICsrbV9l
bnRyaWVzU2l6ZTsKKyAgICByZXR1cm4gJm1fZW50cmllc1tpXTsKKworfQorCit2b2lkIFdlYWtH
Q0hhbmRsZVBvb2w6OmZyZWUoV2Vha0dDSGFuZGxlKiBoYW5kbGUpCit7CisgICAgQVNTRVJUKGhh
bmRsZS0+cG9vbCgpID09IHRoaXMpOworICAgIEFTU0VSVChtX2VudHJpZXNbMF0uaXNOZXh0KCkp
OworICAgIHVuc2lnbmVkIGZyZWVMaXN0ID0gbV9lbnRyaWVzWzBdLmdldE5leHRJbkZyZWVMaXN0
KCk7CisgICAgQVNTRVJUKGZyZWVMaXN0IDwgV2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJp
ZXMpOworICAgIGhhbmRsZS0+c2V0TmV4dEluRnJlZUxpc3QoZnJlZUxpc3QpOworICAgIG1fZW50
cmllc1swXS5zZXROZXh0SW5GcmVlTGlzdChoYW5kbGUgLSBtX2VudHJpZXMpOworICAgIC0tbV9l
bnRyaWVzU2l6ZTsKK30KKwordm9pZCogV2Vha0dDSGFuZGxlUG9vbDo6b3BlcmF0b3IgbmV3KHNp
emVfdCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4mIGFsbG9jYXRp
b24pCit7CisgICAgcmV0dXJuIGFsbG9jYXRpb24uYmFzZSgpOworfQorCit9CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HQ0hhbmRsZS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0hhbmRsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR0NIYW5kbGVfaAorI2RlZmluZSBHQ0hhbmRsZV9oCisKKyNpbmNsdWRlICJB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFw
OworY2xhc3MgSlNDZWxsOworY2xhc3MgV2Vha0dDSGFuZGxlOworY2xhc3MgV2Vha0dDSGFuZGxl
UG9vbDsKKworY2xhc3MgV2Vha0dDSGFuZGxlIHsKKyAgICBmcmllbmQgY2xhc3MgV2Vha0dDSGFu
ZGxlUG9vbDsKKworcHVibGljOgorICAgIC8vIEJlY2F1c2UgSlNDZWxsIG9iamVjdHMgYXJlIGFs
aWduZWQsIHdlIGNhbiB1c2UgdGhlIGxvd2VyIHR3byBiaXRzIGFzCisgICAgLy8gc3RhdHVzIGZs
YWdzLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGlzIHNldCB3aGVuIHRoZSBoYW5kbGUgaXMg
bm90IGEKKyAgICAvLyBwb2ludGVyLCBpLmUuIHdoZW4gaXQncyB1c2VkIGFzIGEgb2Zmc2V0IGZv
ciB0aGUgZnJlZSBsaXN0IGluCisgICAgLy8gV2Vha0dDSGFuZGxlUG9vbC4gVGhlIHNlY29uZCBs
ZWFzdCBzaWduaWZpY2FudCBiaXQgaXMgc2V0IHdoZW4gdGhlIG9iamVjdAorICAgIC8vIHRoZSBw
b2ludGVyIGNvcnJlc3BvbmRzIHRvIGhhcyBiZWVuIGRlbGV0ZWQgYnkgYSBnYXJiYWdlIGNvbGxl
Y3Rpb24KKworICAgIGJvb2wgaXNWYWxpZFB0cigpIHsgcmV0dXJuICEobV9wdHIgJiAzKTsgfQor
ICAgIGJvb2wgaXNQdHIoKSB7IHJldHVybiAhKG1fcHRyICYgMSk7IH0KKyAgICBib29sIGlzTmV4
dCgpIHsgcmV0dXJuIChtX3B0ciAmIDMpID09IDE7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZFB0cigpKTsKKyAgICAgICAgbV9wdHIgfD0g
MjsKKyAgICB9CisKKyAgICBKU0NlbGwqIGdldCgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNQ
dHIoKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KG1fcHRyICYg
fjMpOworICAgIH0KKworICAgIHZvaWQgc2V0KEpTQ2VsbCogcCkKKyAgICB7CisgICAgICAgIG1f
cHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOworICAgICAgICBBU1NFUlQoaXNQ
dHIoKSk7CisgICAgfQorCisgICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCgpOworCitwcml2YXRl
OgorICAgIHVpbnRwdHJfdCBnZXROZXh0SW5GcmVlTGlzdCgpCisgICAgeworICAgICAgICBBU1NF
UlQoaXNOZXh0KCkpOworICAgICAgICByZXR1cm4gbV9wdHIgPj4gMjsKKyAgICB9CisKKyAgICB2
b2lkIHNldE5leHRJbkZyZWVMaXN0KHVpbnRwdHJfdCBuKQorICAgIHsKKyAgICAgICAgbV9wdHIg
PSAobiA8PCAyKSB8IDE7CisgICAgICAgIEFTU0VSVChpc05leHQoKSk7CisgICAgfQorCisgICAg
dWludHB0cl90IG1fcHRyOworfTsKKworY2xhc3MgV2Vha0dDSGFuZGxlUG9vbCB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sU2l6ZSA9IDMyICogMTAyNDsgLy8gMzJrCisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBwb29sTWFzayA9IH4ocG9vbFNpemUgLSAxKTsKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IG51bVBvb2xFbnRyaWVzID0gKHBvb2xTaXplIC0gc2l6ZW9mKEhl
YXAqKSAtIDMgKiBzaXplb2YodW5zaWduZWQpKSAvIHNpemVvZihXZWFrR0NIYW5kbGUpOworCisg
ICAgdHlwZWRlZiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xT
aXplPiBBbGxvY2F0b3I7CisKKyAgICBXZWFrR0NIYW5kbGVQb29sKCk7CisKKyAgICBXZWFrR0NI
YW5kbGUqIGFsbG9jYXRlKEpTQ2VsbCogY2VsbCk7CisgICAgdm9pZCBmcmVlKFdlYWtHQ0hhbmRs
ZSopOworCisgICAgYm9vbCBpc0Z1bGwoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZW50cmll
c1NpemUgPCBXZWFrR0NIYW5kbGVQb29sOjpudW1Qb29sRW50cmllcyk7CisgICAgICAgIHJldHVy
biBtX2VudHJpZXNTaXplID09IFdlYWtHQ0hhbmRsZVBvb2w6Om51bVBvb2xFbnRyaWVzIC0gMTsK
KyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4mKTsKKworcHJp
dmF0ZToKKyAgICBIZWFwKiBtX2hlYXA7CisgICAgdW5zaWduZWQgbV9lbnRyaWVzU2l6ZTsKKyAg
ICB1bnNpZ25lZCBtX2luaXRpYWxBbGxvYzsKKworICAgIFdlYWtHQ0hhbmRsZSBtX2VudHJpZXNb
V2Vha0dDSGFuZGxlUG9vbDo6bnVtUG9vbEVudHJpZXNdOworfTsKKworfQorI2VuZGlmCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ1B0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDUHRyLmgJKHJldmlzaW9uIDY0NzkwKQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWFrR0NQdHJfaAogCiAjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCisjaW5j
bHVkZSAiR0NIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0zNCwyMyArMzUsMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBBIHNtYXJ0
IHBvaW50ZXIgd2hvc2UgZ2V0KCkgZnVuY3Rpb24gcmV0dXJucyAwIGZvciBjZWxscyBhd2FpdGlu
ZyBkZXN0cnVjdGlvbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrR0NQdHIgOiBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgV2Vha0dDUHRyKCkgOiBtX3B0cigwKSB7IH0KKyAg
ICBXZWFrR0NQdHIoKQorICAgICAgICA6IG1fcHRyKDApCisgICAgeworICAgIH0KKwogICAgIFdl
YWtHQ1B0cihUKiBwdHIpIHsgYXNzaWduKHB0cik7IH0KIAorICAgIH5XZWFrR0NQdHIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fcHRyKQorICAgICAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZSht
X3B0cik7CisgICAgfQorCiAgICAgVCogZ2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICgh
bV9wdHIgfHwgIUhlYXA6OmlzQ2VsbE1hcmtlZChtX3B0cikpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmV0dXJuIG1fcHRyOworICAgICAgICBpZiAobV9wdHIgJiYgbV9wdHItPmlz
VmFsaWRQdHIoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wdHItPmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgY2xlYXIoSlND
ZWxsKiBwdHIpCisgICAgYm9vbCBjbGVhcihKU0NlbGwqIHApCiAgICAgewotICAgICAgICBpZiAo
cHRyID09IG1fcHRyKSB7Ci0gICAgICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
bV9wdHIgfHwgbV9wdHItPmdldCgpICE9IHApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgbV9wdHItPnBvb2woKS0+ZnJlZShtX3B0cik7CisgICAgICAgIG1fcHRyID0gMDsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gKmdldCgpOyB9CkBAIC02Miw3ICs3NCw3IEBAIHB1YmxpYzoKICNpZiBDT01QSUxF
UihXSU5TQ1cpCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CiAj
ZWxzZQotICAgIHR5cGVkZWYgVCogV2Vha0dDUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKKyAg
ICB0eXBlZGVmIFdlYWtHQ0hhbmRsZSogV2Vha0dDUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsK
ICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkg
PyAmV2Vha0dDUHRyOjptX3B0ciA6IDA7IH0KICNlbmRpZgogCkBAIC03MywxNCArODUsMTYgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhc3NpZ24oVCogcHRyKQorICAg
IHZvaWQgYXNzaWduKEpTQ2VsbCogcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHB0cik7Ci0g
ICAgICAgIEhlYXA6Om1hcmtDZWxsKHB0cik7Ci0gICAgICAgIG1fcHRyID0gcHRyOworICAgICAg
ICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+c2V0KHB0cik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fcHRyID0gSGVhcDo6aGVhcChwdHIpLT5hZGRXZWFrR0NIYW5kbGUocHRy
KTsKICAgICB9CiAKLSAgICBUKiBtX3B0cjsKKyAgICBXZWFrR0NIYW5kbGUqIG1fcHRyOwogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrR0NQdHI8VD4mIFdlYWtHQ1B0cjxU
Pjo6b3BlcmF0b3I9KFQqIG9wdHIpCkBAIC0xMjksNyArMTQzLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZQogICAgIHJldHVybiBXZWFrR0NQdHI8VD4oY29uc3Rf
Y2FzdDxUKj4ocC5nZXQoKSkpOyAKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBU
KiBnZXRQdHIoY29uc3QgV2Vha0dDUHRyPFQ+JiBwKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlu
bGluZSBUKiBnZXQoY29uc3QgV2Vha0dDUHRyPFQ+JiBwKQogewogICAgIHJldHVybiBwLmdldCgp
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>