<?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>131246</bug_id>
          
          <creation_ts>2014-04-04 15:39:22 -0700</creation_ts>
          <short_desc>Enhanced GC logging</short_desc>
          <delta_ts>2014-04-05 13:08:09 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997713</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 15:39:22 -0700</bug_when>
    <thetext>Getting data on the state of the JSC Heap at runtime is currently in a sad state. The OBJECT_MARK_LOGGING macro enables some basic GC logging, but it requires a full recompile to turn it on. It would be nice if we could runtime enable our GC logging infrastructure while incurring minimal cost when it is disabled. 

It would also be nice to get a complete view of the Heap. Currently OBJECT_MARK_LOGGING provides us with the discovered roots along with parent-child relationships as objects are scanned. However, once an object is scanned it will never be declared as the child of another object during that collection. This gives us a tree-like view of the Heap (i.e. each scanned node only reports having a single parent), where the actual Heap is an arbitrary graph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997729</commentid>
    <comment_count>1</comment_count>
      <attachid>228631</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 16:12:45 -0700</bug_when>
    <thetext>Created attachment 228631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997731</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 16:14:30 -0700</bug_when>
    <thetext>Attachment 228631 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:307:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 18 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>997736</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 16:16:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 228631 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/runtime/Options.h:307:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt; Total errors found: 1 in 18 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

This is a constraint of our Options work (e.g. see OptionRange/optionRangeType).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997738</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 16:16:57 -0700</bug_when>
    <thetext>&gt; This is a constraint of our Options work (e.g. see OptionRange/optionRangeType).

..of how our Options work...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997739</commentid>
    <comment_count>5</comment_count>
      <attachid>228631</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-04 16:19:43 -0700</bug_when>
    <thetext>Comment on attachment 228631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=228631&amp;action=review

r=me

&gt; Source/JavaScriptCore/heap/GCLogging.cpp:106
&gt; +    loggingFunctor.reviveCells();

If the revive call here is required in order to return the heap to a good state, then I think either LoggingFunctor::log() or LoggingFunctor::~LoggingFunctor() should do it automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997746</commentid>
    <comment_count>6</comment_count>
      <attachid>228632</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 16:30:51 -0700</bug_when>
    <thetext>Created attachment 228632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997748</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 16:33:48 -0700</bug_when>
    <thetext>Attachment 228632 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:307:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 18 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>997750</commentid>
    <comment_count>8</comment_count>
      <attachid>228633</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 16:48:42 -0700</bug_when>
    <thetext>Created attachment 228633
fix ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997752</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 16:50:58 -0700</bug_when>
    <thetext>Attachment 228633 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:307:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 21 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>997765</commentid>
    <comment_count>10</comment_count>
      <attachid>228637</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-04 17:38:40 -0700</bug_when>
    <thetext>Created attachment 228637
fix ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997766</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 17:40:14 -0700</bug_when>
    <thetext>Attachment 228637 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Options.h:307:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 21 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>997918</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-05 13:05:37 -0700</bug_when>
    <thetext>Committed r166837: &lt;http://trac.webkit.org/changeset/166837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997919</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-05 13:07:47 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Committed r166837: &lt;http://trac.webkit.org/changeset/166837&gt;

Followup fix in http://trac.webkit.org/changeset/166838</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997920</commentid>
    <comment_count>14</comment_count>
      <attachid>228637</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-05 13:08:09 -0700</bug_when>
    <thetext>Comment on attachment 228637
fix ports

Clearing review flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228631</attachid>
            <date>2014-04-04 16:12:45 -0700</date>
            <delta_ts>2014-04-04 16:30:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131246-20140404161014.patch</filename>
            <type>text/plain</type>
            <size>40931</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0dGluZyBkYXRhIG9uIHRoZSBzdGF0ZSBvZiB0aGUgSlND
IEhlYXAgYXQgcnVudGltZSBpcyBjdXJyZW50bHkgaW4gYSBzYWQgc3RhdGUuIAorICAgICAgICBU
aGUgT0JKRUNUX01BUktfTE9HR0lORyBtYWNybyBlbmFibGVzIHNvbWUgYmFzaWMgR0MgbG9nZ2lu
ZywgYnV0IGl0IHJlcXVpcmVzIGEgZnVsbCAKKyAgICAgICAgcmVjb21waWxlIHRvIHR1cm4gaXQg
b24uIEl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgcnVudGltZSBlbmFibGUgb3VyIEdDIGxv
Z2dpbmcgCisgICAgICAgIGluZnJhc3RydWN0dXJlIHdoaWxlIGluY3VycmluZyBtaW5pbWFsIGNv
c3Qgd2hlbiBpdCBpcyBkaXNhYmxlZC4gCisKKyAgICAgICAgSXQgd291bGQgYWxzbyBiZSBuaWNl
IHRvIGdldCBhIGNvbXBsZXRlIHZpZXcgb2YgdGhlIEhlYXAuIEN1cnJlbnRseSBPQkpFQ1RfTUFS
S19MT0dHSU5HIAorICAgICAgICBwcm92aWRlcyB1cyB3aXRoIHRoZSBkaXNjb3ZlcmVkIHJvb3Rz
IGFsb25nIHdpdGggcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMgYXMgb2JqZWN0cyAKKyAgICAg
ICAgYXJlIHNjYW5uZWQuIEhvd2V2ZXIsIG9uY2UgYW4gb2JqZWN0IGlzIHNjYW5uZWQgaXQgd2ls
bCBuZXZlciBiZSBkZWNsYXJlZCBhcyB0aGUgY2hpbGQgCisgICAgICAgIG9mIGFub3RoZXIgb2Jq
ZWN0IGR1cmluZyB0aGF0IGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSB0cmVlLWxpa2Ugdmll
dyBvZiB0aGUgCisgICAgICAgIEhlYXAgKGkuZS4gZWFjaCBzY2FubmVkIG5vZGUgb25seSByZXBv
cnRzIGhhdmluZyBhIHNpbmdsZSBwYXJlbnQpLCB3aGVyZSB0aGUgYWN0dWFsIAorICAgICAgICBI
ZWFwIGNhbiBiZSBhbiBhcmJpdHJhcnkgZ3JhcGguCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBs
YWNlcyBPQkpFQ1RfTUFSS19MT0dHSU5HIGFuZCBnaXZlcyB1cyB0aGVzZSBuaWNlIHRvIGhhdmVz
LiBGaXJzdCBpdCBlbmhhbmNlcyAKKyAgICAgICAgb3VyIGxvZ0dDKCkgcnVudGltZSBPcHRpb24g
YnkgY2hhbmdpbmcgaXQgdG8gYmUgYSB0cmktc3RhdGUgdmFsdWUgb2YgTm9uZSwgQmFzaWMsIG9y
IFZlcmJvc2UgCisgICAgICAgIGxvZ2dpbmcgbGV2ZWxzLiBOb25lIG1lYW5zIG5vIGxvZ2dpbmcg
aXMgZG9uZSwgQmFzaWMgaXMgd2hhdCBsb2dHQygpID0gdHJ1ZSB3b3VsZCBoYXZlIGRvbmUgCisg
ICAgICAgIHByaW9yIHRvIHRoaXMgcGF0Y2gsIGFuZCBWZXJib3NlIGxvZ3MgYWxsIG9iamVjdCBy
ZWxhdGlvbnNoaXBzLgorCisgICAgICAgIEpTQ2VsbCBoYXMgbmV3IGR1bXAvZHVtcFRvU3RyZWFt
IG1ldGhvZHMsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgInZpcnR1YWwiIHRvIGFsbG93IAorICAg
ICAgICBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0cmluZyByZXByZXNlbnRh
dGlvbiB0aGF0IHdpbGwgYmUgZHVtcGVkLiBUaGVzZSAKKyAgICAgICAgbWV0aG9kcyBhbGxvdyBK
U0NlbGxzIHRvIGJlIGR1bXBlZCB1c2luZyB0aGUgc3RhbmRhcmQgZGF0YUxvZygpIGNhbGxzIHNp
bWlsYXIgdG8gbXVjaCBvZgorICAgICAgICB0aGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZSBpbiBv
dXIgY29tcGlsZXJzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgR0NMb2dnaW5n
IGNsYXNzIHRoYXQgaGFuZGxlcyBkdW1waW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2Jq
ZWN0cy4KKyAgICAgICAgSXQgZG9lcyB0aGlzIGJ5IHVzaW5nIHRoZSBwcmUtZXhpc3Rpbmcgdmlz
aXRDaGlsZHJlbiB2aXJ0dWFsIG1ldGhvZHMgdG8gb2J0YWluIHRoZSBpbW1lZGlhdGUKKyAgICAg
ICAgY2hpbGRyZW4gb2YgZWFjaCBsaXZlIGNlbGwgYXQgdGhlIGVuZCBvZiBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWVldHMgb3VyIGdvYWwgb2YgYmVpbmcgbmV1
dHJhbCBvbiB0aGUgYmVuY2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9HQ0xvZ2dpbmcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OkxvZ2dpbmdGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6TG9nZ2luZ0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpMb2dnaW5nRnVu
Y3Rvcjo6bG9nKToKKyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldml2ZUNlbGxzKToK
KyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpT
Qzo6R0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgpOgorICAgICAgICAqIGhlYXAvR0NMb2dnaW5n
Lmg6IEFkZGVkLgorICAgICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheS5oOgorICAgICAgICAo
SlNDOjpHQ1NlZ21lbnRlZEFycmF5OjpiZWdpbik6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVk
QXJyYXk6OmVuZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6dmlzaXRDb21waWxlcldvcmtsaXN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0UHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0VGVtcFNvcnRW
ZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRBcmd1bWVudEJ1ZmZlcnMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp2aXNpdEV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0SGFuZGxlU3RhY2sp
OgorICAgICAgICAoSlNDOjpIZWFwOjp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGluZXMp
OgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6
CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaGVhcC9T
bG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkdW1wKToKKyAgICAg
ICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjptYXJr
U3RhY2spOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjppbnRlcm5hbEFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZHVtcFRvU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpkdW1wVG9TdHJlYW0pOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpS
b3BlQnVpbGRlcjo6bGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA0LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSBmb3IgSlNDb250ZXh0
IGNvbnNvbGUgdG8gbG9nIHRvIHN5c3RlbSBjb25zb2xlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc5NSw2ICs3OTUsNyBAQAogCQkyQTgzNjM4OTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAgKi87IH07CiAJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUFBMzEy
MThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5NENDOCAvKiBT
dHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFCQ0RFNjE4RUYyOTQy
MDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi87IH07CiAJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgKi87IH07CiAJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUFEOTY0QTE4
NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFEOTY0OTE4NTY5NDE3MDAxRjkz
QkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi87IH07CkBAIC04MDMsNiArODA0LDcg
QEAKIAkJMkFDQ0YzREUxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QUNDRjNEQzE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cCAqLzsgfTsKIAkJMkFDQ0YzREYxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVs
aXNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFDQ0YzREQxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFz
ZS5oICovOyB9OwogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4
OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CisJCTJB
REZBMjYzMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8q
IEdDTG9nZ2luZy5jcHAgKi87IH07CiAJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAq
LzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8q
IGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsgfTsKQEAgLTIy
ODgsNiArMjI5MCw3IEBACiAJCTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
QTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUFBMzEwMThCRDQ5RDEwMDM5NENDOCAvKiBT
dHJ1Y3R1cmVJREJsb2IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0
dXJlSURCbG9iLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBQUJDREU2MThFRjI5
NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR0NMb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNBMThD
QTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQ0U2M0IxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0FjdGl2aXR5Q2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBRDk2NDkxODU2OTQxNzAw
MUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIyOTYsNiArMjI5OSw3IEBACiAJCTJBQ0NGM0RDMTg1RkUyNkIwMDgz
RTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyQUNDRjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVy
RWxpc2lvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0b3Jl
QmFycmllckVsaXNpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25Q
aGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2
NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUY3MzgyQjE4QkJCRjkyMDA4
QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5h
bWUgPSBsaWJ6LmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0g
U0RLUk9PVDsgfTsKQEAgLTM2MzIsNiArMzYzNiw4IEBACiAJCQkJMkE4MzYzODQxOEQ3RDBFRTAw
MDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLywKIAkJCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8sCiAJCQkJMkE4MzYz
ODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLywKKwkJCQky
QUFCQ0RFNjE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi8sCisJCQkJMkFERkEyNjIx
OEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGhl
YXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDk4MCw2ICs0OTg2LDcgQEAKIAkJ
CQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIw
OTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAy
M0Q4N0MgLyogQmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2
QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
QzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC02
Njc4LDYgKzY2ODUsNyBAQAogCQkJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3Rl
clNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNFRDE4OTFCNTU0MDAzMUM3RkEgLyog
UmVndWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RTkxODIzNDBC
MzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJBREZB
MjYzMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1
RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDTG9nZ2luZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDTG9nZ2luZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NMb2dnaW5nLmgiCisKKyNpbmNsdWRlICJDbGFzc0lu
Zm8uaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgi
CisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgY2hhciogR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKExldmVs
IGxldmVsKQoreworICAgIHN3aXRjaCAobGV2ZWwpIHsKKyAgICBjYXNlIE5vbmU6CisgICAgICAg
IHJldHVybiAiTm9uZSI7CisgICAgY2FzZSBCYXNpYzoKKyAgICAgICAgcmV0dXJuICJCYXNpYyI7
CisgICAgY2FzZSBWZXJib3NlOgorICAgICAgICByZXR1cm4gIlZlcmJvc2UiOworICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitj
bGFzcyBMb2dnaW5nRnVuY3RvciB7CitwdWJsaWM6CisgICAgTG9nZ2luZ0Z1bmN0b3IoU2xvdFZp
c2l0b3ImIHNsb3RWaXNpdG9yKQorICAgICAgICA6IG1fc2xvdFZpc2l0b3Ioc2xvdFZpc2l0b3Ip
CisgICAgeworICAgICAgICBtX3NhdmVkTWFya1N0YWNrLnJlc2l6ZShtX3Nsb3RWaXNpdG9yLm1h
cmtTdGFjaygpLnNpemUoKSk7CisgICAgICAgIG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuZmls
bFZlY3RvcihtX3NhdmVkTWFya1N0YWNrKTsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgbV9saXZlQ2VsbHMuYXBwZW5kKGNlbGwpOwor
ICAgICAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNsZWFyTWFya2VkKGNlbGwpOwor
ICAgIH0KKworICAgIHZvaWQgbG9nKCkKKyAgICB7CisgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xl
YXJNYXJrU3RhY2soKTsKKyAgICAgICAgZm9yIChKU0NlbGwqIGNlbGwgOiBtX2xpdmVDZWxscykg
eworICAgICAgICAgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+dmlzaXRDaGlsZHJlbihjZWxsLCBt
X3Nsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIiwgKmNlbGwsICI6XG4iLCBt
X3Nsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgSlNDZWxsKiBuZWlnaGJvciA6
IG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkpCisgICAgICAgICAgICAgICAgTWFya2VkQmxvY2s6
OmJsb2NrRm9yKG5laWdoYm9yKS0+Y2xlYXJNYXJrZWQobmVpZ2hib3IpOworICAgICAgICAgICAg
bV9zbG90VmlzaXRvci5jbGVhck1hcmtTdGFjaygpOworICAgICAgICB9CisgICAgICAgIG1fc2xv
dFZpc2l0b3IucmVzZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHJldml2ZUNlbGxzKCkKKyAgICB7
CisgICAgICAgIGZvciAoSlNDZWxsKiBjZWxsIDogbV9saXZlQ2VsbHMpCisgICAgICAgICAgICBN
YXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPnNldE1hcmtlZChjZWxsKTsKKworICAgICAgICBm
b3IgKGNvbnN0IEpTQ2VsbCogY2VsbCA6IG1fc2F2ZWRNYXJrU3RhY2spIHsKKyAgICAgICAgICAg
IG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuYXBwZW5kKGNlbGwpOworICAgICAgICAgICAgY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKS0+c2V0UmVtZW1iZXJlZCh0cnVlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOworCisgICAgdm9pZCByZXR1cm5W
YWx1ZSgpIHsgfTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Y29uc3QgSlNDZWxsKj4gbV9zYXZl
ZE1hcmtTdGFjazsKKyAgICBWZWN0b3I8SlNDZWxsKj4gbV9saXZlQ2VsbHM7CisgICAgU2xvdFZp
c2l0b3ImIG1fc2xvdFZpc2l0b3I7Cit9OworCit2b2lkIEdDTG9nZ2luZzo6ZHVtcE9iamVjdEdy
YXBoKEhlYXAqIGhlYXApCit7CisgICAgTG9nZ2luZ0Z1bmN0b3IgbG9nZ2luZ0Z1bmN0b3IoaGVh
cC0+bV9zbG90VmlzaXRvcik7CisgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3Bl
KCpoZWFwKTsKKyAgICBoZWFwLT5vYmplY3RTcGFjZSgpLmZvckVhY2hMaXZlQ2VsbChpdGVyYXRp
b25TY29wZSwgbG9nZ2luZ0Z1bmN0b3IpOworICAgIGxvZ2dpbmdGdW5jdG9yLmxvZygpOworICAg
IGxvZ2dpbmdGdW5jdG9yLnJldml2ZUNlbGxzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHQ0xvZ2dpbmdfaAorI2RlZmlu
ZSBHQ0xvZ2dpbmdfaAorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEhlYXA7CisKK2NsYXNzIEdDTG9nZ2luZyB7CitwdWJsaWM6CisgICAg
ZW51bSBMZXZlbCA6IHVpbnQ4X3QgeworICAgICAgICBOb25lID0gMCwKKyAgICAgICAgQmFzaWMs
CisgICAgICAgIFZlcmJvc2UKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxldmVs
QXNTdHJpbmcoTGV2ZWwpOworICAgIHN0YXRpYyB2b2lkIGR1bXBPYmplY3RHcmFwaChIZWFwKik7
Cit9OworCit0eXBlZGVmIEdDTG9nZ2luZzo6TGV2ZWwgZ2NMb2dMZXZlbDsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHQ0xvZ2dpbmdfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAkocmV2aXNpb24gMTY2ODA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHQ1NlZ21l
bnRlZEEKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgR0NTZWdtZW50ZWRBcnJheSB7CiAg
ICAgZnJpZW5kIGNsYXNzIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPjsKKyAgICBmcmllbmQg
Y2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPGNvbnN0IFQ+OwogcHVibGljOgogICAgIEdD
U2VnbWVudGVkQXJyYXkoQmxvY2tBbGxvY2F0b3ImKTsKICAgICB+R0NTZWdtZW50ZWRBcnJheSgp
OwpAQCAtODEsOCArODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgdHlw
ZWRlZiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4gaXRlcmF0b3I7Ci0gICAgaXRlcmF0b3Ig
YmVnaW4oKSB7IHJldHVybiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4obV9zZWdtZW50cy5o
ZWFkKCksIG1fdG9wKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIEdDU2VnbWVudGVk
QXJyYXlJdGVyYXRvcjxUPigpOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4obV9zZWdtZW50cy5oZWFkKCksIG1fdG9wKTsg
fQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVy
YXRvcjxUPigpOyB9CiAKIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0
cnVjdCBDYXBhY2l0eUZyb21TaXplIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE3ICs0NzQsMTMgQEAgdm9pZCBIZWFwOjpnZXRD
b25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKAogICAgIH0KIH0KIAotdm9pZCBIZWFwOjptYXJrUm9v
dHMoKQordm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lKQogewogICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJiYWdlIENvbGxlY3Rpb246IE1hcmtpbmci
KTsKIAogICAgIEdDUEhBU0UoTWFya1Jvb3RzKTsKICAgICBBU1NFUlQoaXNWYWxpZFRocmVhZFN0
YXRlKG1fdm0pKTsKIAotI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShHR0MpCiAgICAgVmVjdG9yPGNvbnN0IEpTQ2VsbCo+IHJlbWVtYmVy
ZWRTZXQobV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5zaXplKCkpOwogICAgIG1fc2xvdFZpc2l0
b3IubWFya1N0YWNrKCkuZmlsbFZlY3RvcihyZW1lbWJlcmVkU2V0KTsKQEAgLTUzNSw3ICs1MzEs
NyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBjbGVhclJlbWVtYmVyZWRTZXQocmVt
ZW1iZXJlZFNldCk7CiAgICAgbV9zaGFyZWREYXRhLmRpZEZpbmlzaE1hcmtpbmcoKTsKLSAgICB1
cGRhdGVPYmplY3RDb3VudHMoKTsKKyAgICB1cGRhdGVPYmplY3RDb3VudHMoZ2NTdGFydFRpbWUp
OwogICAgIHJlc2V0VmlzaXRvcnMoKTsKIH0KIApAQCAtNTk5LDEzICs1OTUsMjEgQEAgdm9pZCBI
ZWFwOjp2aXNpdFNtYWxsU3RyaW5ncygpCiB7CiAgICAgR0NQSEFTRShWaXNpdFNtYWxsU3RyaW5n
cyk7CiAgICAgbV92bS0+c21hbGxTdHJpbmdzLnZpc2l0U3Ryb25nUmVmZXJlbmNlcyhtX3Nsb3RW
aXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiU21hbGwgc3RyaW5nczpcbiIsIG1fc2xvdFZpc2l0b3IpOwor
CisgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCiB2b2lkIEhlYXA6OnZp
c2l0Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIHJvb3RzKQogewogICAgIEdD
UEhBU0UoVmlzaXRDb25zZXJ2YXRpdmVSb290cyk7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RW
aXNpdG9yLCAiQ29uc2VydmF0aXZlIFJvb3RzIik7CiAgICAgbV9zbG90VmlzaXRvci5hcHBlbmQo
cm9vdHMpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3Nl
KQorICAgICAgICBkYXRhTG9nKCJDb25zZXJ2YXRpdmUgUm9vdHM6XG4iLCBtX3Nsb3RWaXNpdG9y
KTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIApAQCAtNjEzLDI5
ICs2MTcsMzQgQEAgdm9pZCBIZWFwOjp2aXNpdENvbXBpbGVyV29ya2xpc3RzKCkKIHsKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICBHQ1BIQVNFKFZpc2l0REZHV29ya2xpc3RzKTsKLSAgICBNQVJL
X0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJERkcgV29ya2xpc3RzIik7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gREZHOjpudW1iZXJPZldvcmtsaXN0cygpOyBpLS07KSB7CiAgICAgICAgIGlmIChE
Rkc6OldvcmtsaXN0KiB3b3JrbGlzdCA9IERGRzo6d29ya2xpc3RGb3JJbmRleE9yTnVsbChpKSkK
ICAgICAgICAgICAgIHdvcmtsaXN0LT52aXNpdENoaWxkcmVuKG1fc2xvdFZpc2l0b3IsIG1fY29k
ZUJsb2Nrcyk7CiAgICAgfQorCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5n
OjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJERkcgV29ya2xpc3RzOlxuIiwgbV9zbG90Vmlz
aXRvcik7CisKKyAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiAjZW5kaWYKIH0K
IAogdm9pZCBIZWFwOjp2aXNpdFByb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFw
Um9vdFZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNpdFByb3RlY3RlZE9iamVjdHMpOwotICAg
IE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIlByb3RlY3RlZCBPYmplY3RzIik7CiAKICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb3RlY3RlZFZhbHVlcykKICAgICAgICAgaGVhcFJvb3RW
aXNpdG9yLnZpc2l0KCZwYWlyLmtleSk7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBH
Q0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIlByb3RlY3RlZCBPYmplY3RzOlxu
IiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7
CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RWaXNpdG9yJiBo
ZWFwUm9vdFZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNpdFRlbXBTb3J0VmVjdG9ycyk7Ci0g
ICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiVGVtcCBTb3J0IFZlY3RvcnMiKTsKLQog
ICAgIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93Pio+IFZlY3Rvck9mVmFsdWVTdHJpbmdWZWN0b3JzOwogCiAgICAgZm9yIChhdXRv
KiB2ZWN0b3IgOiBtX3RlbXBTb3J0aW5nVmVjdG9ycykgewpAQCAtNjQ0LDUzICs2NTMsNzIgQEAg
dm9pZCBIZWFwOjp2aXNpdFRlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdAogICAgICAgICAgICAgICAg
IGhlYXBSb290VmlzaXRvci52aXNpdCgmdmFsdWVTdHJpbmdQYWlyLmZpcnN0KTsKICAgICAgICAg
fQogICAgIH0KKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZygiVGVtcCBTb3J0IFZlY3RvcnM6XG4iLCBtX3Nsb3RWaXNpdG9y
KTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9pZCBIZWFw
Ojp2aXNpdEFyZ3VtZW50QnVmZmVycyhIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
R0NQSEFTRShNYXJraW5nQXJndW1lbnRCdWZmZXJzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xv
dFZpc2l0b3IsICJBcmd1bWVudCBCdWZmZXJzIik7CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0IHx8
ICFtX21hcmtMaXN0U2V0LT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyOjptYXJrTGlzdHModmlzaXRvciwgKm1fbWFya0xpc3RTZXQpOworCisgICAg
aWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBkYXRh
TG9nKCJBcmd1bWVudCBCdWZmZXJzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Nsb3RW
aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRFeGNlcHRpb24o
SGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEdDUEhBU0UoTWFya2luZ0V4Y2VwdGlv
bik7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiRXhjZXB0aW9ucyIpOwogICAg
IGlmICghbV92bS0+ZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHZpc2l0b3Iu
dmlzaXQobV92bS0+YWRkcmVzc09mRXhjZXB0aW9uKCkpOworCisgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJFeGNlcHRpb25z
OlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWlu
KCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRTdHJvbmdIYW5kbGVzKEhlYXBSb290VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKFZpc2l0U3Ryb25nSGFuZGxlcyk7Ci0gICAgTUFSS19M
T0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiU3Ryb25nIEhhbmRsZXMiKTsKICAgICBtX2hhbmRsZVNl
dC52aXNpdFN0cm9uZ0hhbmRsZXModmlzaXRvcik7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0Mo
KSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIlN0cm9uZyBIYW5kbGVz
OlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWlu
KCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRIYW5kbGVTdGFjayhIZWFwUm9vdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNpdEhhbmRsZVN0YWNrKTsKLSAgICBNQVJLX0xPR19S
T09UKG1fc2xvdFZpc2l0b3IsICJIYW5kbGUgU3RhY2siKTsKICAgICBtX2hhbmRsZVN0YWNrLnZp
c2l0KHZpc2l0b3IpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpW
ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJIYW5kbGUgU3RhY2s6XG4iLCBtX3Nsb3RWaXNpdG9y
KTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9pZCBIZWFw
Ojp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGluZXMoKQogewogICAgIEdDUEhBU0UoVHJh
Y2VDb2RlQmxvY2tzQW5kSklUU3R1YlJvdXRpbmVzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xv
dFZpc2l0b3IsICJUcmFjZSBDb2RlIEJsb2NrcyBhbmQgSklUIFN0dWIgUm91dGluZXMiKTsKICAg
ICBtX2NvZGVCbG9ja3MudHJhY2VNYXJrZWQobV9zbG90VmlzaXRvcik7CiAgICAgbV9qaXRTdHVi
Um91dGluZXMudHJhY2VNYXJrZWRTdHViUm91dGluZXMobV9zbG90VmlzaXRvcik7CisKKyAgICBp
ZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIkNvZGUgQmxvY2tzIGFuZCBKSVQgU3R1YiBSb3V0aW5lczpcbiIsIG1fc2xvdFZpc2l0b3Ip
OworCiAgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCkBAIC03MDUsMTIg
KzczMywxNSBAQCB2b2lkIEhlYXA6OmNvbnZlcmdlKCkKIHZvaWQgSGVhcDo6dmlzaXRXZWFrSGFu
ZGxlcyhIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNpdGluZ0xp
dmVXZWFrSGFuZGxlcyk7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiTGl2ZSBX
ZWFrIEhhbmRsZXMiKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBtX29iamVjdFNwYWNl
LnZpc2l0V2Vha1NldHModmlzaXRvcik7CiAgICAgICAgIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygp
OwogICAgICAgICBpZiAobV9zbG90VmlzaXRvci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2Up
CisgICAgICAgICAgICBkYXRhTG9nKCJMaXZlIFdlYWsgSGFuZGxlczpcbiIsIG1fc2xvdFZpc2l0
b3IpOworCiAgICAgICAgIHsKICAgICAgICAgICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxl
cihtX3Nsb3RWaXNpdG9yKTsKICAgICAgICAgICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJh
aW4oKTsKQEAgLTczNCwxNyArNzY1LDE3IEBAIHZvaWQgSGVhcDo6Y2xlYXJSZW1lbWJlcmVkU2V0
KFZlY3Rvcjxjb24KICNlbmRpZgogfQogCi12b2lkIEhlYXA6OnVwZGF0ZU9iamVjdENvdW50cygp
Cit2b2lkIEhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyhkb3VibGUgZ2NTdGFydFRpbWUpCiB7CiAg
ICAgR0NDT1VOVEVSKFZpc2l0ZWRWYWx1ZUNvdW50LCBtX3Nsb3RWaXNpdG9yLnZpc2l0Q291bnQo
KSk7CiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykKLSAgICBzaXplX3QgdmlzaXRD
b3VudCA9IG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgpOworICAgIGlmIChPcHRpb25zOjpsb2dH
QygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkgeworICAgICAgICBzaXplX3QgdmlzaXRDb3VudCA9
IG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgpOwogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAg
ICB2aXNpdENvdW50ICs9IG1fc2hhcmVkRGF0YS5jaGlsZFZpc2l0Q291bnQoKTsKLSNlbmRpZgot
ICAgIE1BUktfTE9HX01FU1NBR0UyKCJcbk51bWJlciBvZiBsaXZlIE9iamVjdHMgYWZ0ZXIgZnVs
bCBHQyAlbHUsIHRvb2sgJS42ZiBzZWNzXG4iLCB2aXNpdENvdW50LCBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUpOworICAgICAgICB2aXNpdENvdW50ICs9
IG1fc2hhcmVkRGF0YS5jaGlsZFZpc2l0Q291bnQoKTsKICNlbmRpZgorICAgICAgICBkYXRhTG9n
RigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVyIEdDICVsdSwgdG9vayAlLjZmIHNlY3Nc
biIsIHZpc2l0Q291bnQsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBnY1N0
YXJ0VGltZSk7CisgICAgfQogCiAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVu
Q29sbGVjdGlvbikgewogICAgICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkICs9IG1fc2xvdFZpc2l0
b3IuYnl0ZXNWaXNpdGVkKCk7CkBAIC05NTEsNyArOTgyLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0
KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAgIHN0b3BBbGxvY2F0aW9uKCk7CiAgICAgZmx1c2hX
cml0ZUJhcnJpZXJCdWZmZXIoKTsKIAotICAgIG1hcmtSb290cygpOworICAgIG1hcmtSb290cyhn
Y1N0YXJ0VGltZSk7CiAKICAgICBKQVZBU0NSSVBUQ09SRV9HQ19NQVJLRUQoKTsKIApAQCAtMTE3
OCw2ICsxMjA5LDkgQEAgdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnYwog
CiAgICAgaWYgKE9wdGlvbnM6OnNob3dPYmplY3RTdGF0aXN0aWNzKCkpCiAgICAgICAgIEhlYXBT
dGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyh0aGlzKTsKKworICAgIGlmIChPcHRpb25z
Ojpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgR0NMb2dnaW5nOjpkdW1w
T2JqZWN0R3JhcGgodGhpcyk7CiB9CiAKIHZvaWQgSGVhcDo6cmVzdW1lQ29tcGlsZXJUaHJlYWRz
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE2NjgwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIy
LDYgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0NGb3JBV2hpbGU7
CiAgICAgZnJpZW5kIGNsYXNzIERlbGF5ZWRSZWxlYXNlU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNz
IEdDQXdhcmVKSVRTdHViUm91dGluZTsKKyAgICBmcmllbmQgY2xhc3MgR0NMb2dnaW5nOwogICAg
IGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJSb3V0aW5l
OwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yNjEsNyArMjYy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKCk7CiAgICAg
dm9pZCBzdG9wQWxsb2NhdGlvbigpOwogCi0gICAgdm9pZCBtYXJrUm9vdHMoKTsKKyAgICB2b2lk
IG1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUpOwogICAgIHZvaWQgZ2F0aGVyU3RhY2tSb290
cyhDb25zZXJ2YXRpdmVSb290cyYsIHZvaWQqKiBkdW1teSk7CiAgICAgdm9pZCBnYXRoZXJKU1N0
YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICB2b2lkIGdhdGhlclNjcmF0Y2hCdWZm
ZXJSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOwpAQCAtMjc5LDcgKzI4MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb252ZXJnZSgpOwogICAgIHZvaWQgdmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9v
dFZpc2l0b3ImKTsKICAgICB2b2lkIGNsZWFyUmVtZW1iZXJlZFNldChWZWN0b3I8Y29uc3QgSlND
ZWxsKj4mKTsKLSAgICB2b2lkIHVwZGF0ZU9iamVjdENvdW50cygpOworICAgIHZvaWQgdXBkYXRl
T2JqZWN0Q291bnRzKGRvdWJsZSBnY1N0YXJ0VGltZSk7CiAgICAgdm9pZCByZXNldFZpc2l0b3Jz
KCk7CiAKICAgICB2b2lkIHJlYXBXZWFrSGFuZGxlcygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwzMCArMjYsNiBA
QAogI2lmbmRlZiBNYXJrU3RhY2tfaAogI2RlZmluZSBNYXJrU3RhY2tfaAogCi0jaWYgRU5BQkxF
KE9CSkVDVF9NQVJLX0xPR0dJTkcpCi0jZGVmaW5lIE1BUktfTE9HX01FU1NBR0UwKG1lc3NhZ2Up
IGRhdGFMb2dGKG1lc3NhZ2UpCi0jZGVmaW5lIE1BUktfTE9HX01FU1NBR0UxKG1lc3NhZ2UsIGFy
ZzEpIGRhdGFMb2dGKG1lc3NhZ2UsIGFyZzEpCi0jZGVmaW5lIE1BUktfTE9HX01FU1NBR0UyKG1l
c3NhZ2UsIGFyZzEsIGFyZzIpIGRhdGFMb2dGKG1lc3NhZ2UsIGFyZzEsIGFyZzIpCi0jZGVmaW5l
IE1BUktfTE9HX1JPT1QodmlzaXRvciwgcm9vdE5hbWUpIFwKLSAgICBkYXRhTG9nRigiXG4lczog
Iiwgcm9vdE5hbWUpOyBcCi0gICAgKHZpc2l0b3IpLnJlc2V0Q2hpbGRDb3VudCgpCi0jZGVmaW5l
IE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBwYXJlbnQpIFwKLSAgICBkYXRhTG9nRigiXG4lcCAo
JXMpOiAiLCBwYXJlbnQsIHBhcmVudC0+Y2xhc3NOYW1lKCkgPyBwYXJlbnQtPmNsYXNzTmFtZSgp
IDogInVua25vd24iKTsgXAotICAgICh2aXNpdG9yKS5yZXNldENoaWxkQ291bnQoKQotI2RlZmlu
ZSBNQVJLX0xPR19DSElMRCh2aXNpdG9yLCBjaGlsZCkgXAotICAgIGlmICgodmlzaXRvcikuY2hp
bGRDb3VudCgpKSBcCi0gICAgZGF0YUxvZ0ZTdHJpbmcoIiwgIik7IFwKLSAgICBkYXRhTG9nRigi
JXAiLCBjaGlsZCk7IFwKLSAgICAodmlzaXRvcikuaW5jcmVtZW50Q2hpbGRDb3VudCgpCi0jZWxz
ZQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdFMChtZXNzYWdlKSBkbyB7IH0gd2hpbGUgKGZhbHNl
KQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdFMShtZXNzYWdlLCBhcmcxKSBkbyB7IH0gd2hpbGUg
KGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdFMihtZXNzYWdlLCBhcmcxLCBhcmcyKSBk
byB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19ST09UKHZpc2l0b3IsIHJvb3RO
YW1lKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19QQVJFTlQodmlzaXRv
ciwgcGFyZW50KSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19DSElMRCh2
aXNpdG9yLCBjaGlsZCkgZG8geyB9IHdoaWxlIChmYWxzZSkKLSNlbmRpZgotCiAjaW5jbHVkZSAi
R0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAxNjY4MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Myw0ICszNzMsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6dmFsaWRhdGUoSlND
ZWxsKikKIH0KICNlbmRpZgogCit2b2lkIFNsb3RWaXNpdG9yOjpkdW1wKFByaW50U3RyZWFtJikg
Y29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEpTQ2VsbCogY2VsbCA6IG1hcmtTdGFjaygpKQorICAg
ICAgICBkYXRhTG9nKCpjZWxsLCAiXG4iKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDE2Njgw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIH5TbG90VmlzaXRvcigpOwogCiAg
ICAgTWFya1N0YWNrQXJyYXkmIG1hcmtTdGFjaygpIHsgcmV0dXJuIG1fc3RhY2s7IH0KKyAgICBj
b25zdCBNYXJrU3RhY2tBcnJheSYgbWFya1N0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjazsg
fQogCiAgICAgVk0mIHZtKCk7CiAgICAgY29uc3QgVk0mIHZtKCkgY29uc3Q7CkBAIC0xMDksMTEg
KzExMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqKTsKICAgICB2b2lkIGFkZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIoVW5jb25kaXRpb25hbEZpbmFsaXplciopOwogCi0jaWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xP
R0dJTkcpCiAgICAgaW5saW5lIHZvaWQgcmVzZXRDaGlsZENvdW50KCkgeyBtX2xvZ0NoaWxkQ291
bnQgPSAwOyB9CiAgICAgaW5saW5lIHVuc2lnbmVkIGNoaWxkQ291bnQoKSB7IHJldHVybiBtX2xv
Z0NoaWxkQ291bnQ7IH0KICAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRDaGlsZENvdW50KCkgeyBt
X2xvZ0NoaWxkQ291bnQrKzsgfQotI2VuZGlmCisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFyYWxsZWxNb2RlRW5hYmxl
cjsKQEAgLTE0OCw5ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmdJbXBsKiwgSlNWYWx1ZT4gVW5pcXVlU3RyaW5nTWFwOwogICAgIFVuaXF1ZVN0cmluZ01hcCBt
X3VuaXF1ZVN0cmluZ3M7CiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykKICAgICB1
bnNpZ25lZCBtX2xvZ0NoaWxkQ291bnQ7Ci0jZW5kaWYKIAogcHVibGljOgogI2lmICFBU1NFUlRf
RElTQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzExNiw2
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6aW50ZXJuYWwKICAgICBjZWxsLT5z
ZXRNYXJrZWQoKTsKICAgICBtX2J5dGVzVmlzaXRlZCArPSBNYXJrZWRCbG9jazo6YmxvY2tGb3Io
Y2VsbCktPmNlbGxTaXplKCk7CiAgICAgICAgIAotICAgIE1BUktfTE9HX0NISUxEKCp0aGlzLCBj
ZWxsKTsKLQogICAgIHVuY29uZGl0aW9uYWxseUFwcGVuZChjZWxsKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDE2NjgwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Niw2ICs5Niw5IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgCiAgICAgdHlw
ZWRlZiBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNB
cnJheUJ1ZmZlclZpZXcqKTsKICAgICBHZXRUeXBlZEFycmF5SW1wbCBnZXRUeXBlZEFycmF5SW1w
bDsKKworICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyKShjb25zdCBK
U0NlbGwqLCBQcmludFN0cmVhbSYpOworICAgIER1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyIGR1bXBU
b1N0cmVhbTsKIH07CiAKICNkZWZpbmUgQ1JFQVRFX01FTUJFUl9DSEVDS0VSKG1lbWJlcikgXApA
QCAtMTM4LDcgKzE0MSw4IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05h
bWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRlZmluZU93blBy
b3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnksIFwK
LSAgICAgICAgJkNsYXNzTmFtZTo6Z2V0VHlwZWRBcnJheUltcGwgXAorICAgICAgICAmQ2xhc3NO
YW1lOjpnZXRUeXBlZEFycmF5SW1wbCwgXAorICAgICAgICAmQ2xhc3NOYW1lOjpkdW1wVG9TdHJl
YW0gXAogICAgIH0sIFwKICAgICBDbGFzc05hbWU6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE2
NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDE2IEBAIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKIH0KIAordm9pZCBKU0NlbGw6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBtZXRob2RUYWJsZSgpLT5kdW1wVG9T
dHJlYW0odGhpcywgb3V0KTsKK30KKwordm9pZCBKU0NlbGw6OmR1bXBUb1N0cmVhbShjb25zdCBK
U0NlbGwqIGNlbGwsIFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgb3V0LnByaW50ZigiPCVwLCAl
cz4iLCBjZWxsLCBjZWxsLT5jbGFzc05hbWUoKSk7Cit9CisKIHZvaWQgSlNDZWxsOjpjb3B5QmFj
a2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKQogewogfQpAQCAtMTky
LDcgKzIwMiw3IEBAIFN0cmluZyBKU0NlbGw6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCoKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWNvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKCkK
K2NvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xh
c3NJbmZvKCktPmNsYXNzTmFtZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
IAogICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFnczsgfQogCi0gICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCk7CisgICAg
Y29uc3QgY2hhciogY2xhc3NOYW1lKCkgY29uc3Q7CiAKICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqLCBT
dHJpbmcmKSBjb25zdDsKQEAgLTEyMyw2ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwogCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50
U3RyZWFtJik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3Rv
cmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNjY4MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw4ICsxMDYsNiBAQCBpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0
cnVjdHVyZShWTSYgCiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIE1BUktfTE9HX1BBUkVOVCh2aXNp
dG9yLCBjZWxsKTsKLQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJl
KHZpc2l0b3Iudm0oKSk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnN0
cnVjdHVyZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDI0ICs0OSwyNyBAQCB2b2lkIEpT
U3RyaW5nOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5KU1N0cmluZzo6
fkpTU3RyaW5nKCk7CiB9CiAKLXZvaWQgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSlNTdHJpbmc6OmR1bXBUb1N0cmVhbShj
b25zdCBKU0NlbGwqIGNlbGwsIFByaW50U3RyZWFtJiBvdXQpCiB7Ci0gICAgSlNTdHJpbmcqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIAotICAgIE1BUktfTE9HX01FU1NBR0UxKCJb
JXVdOiAiLCB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7Ci0KLSNpZiBFTkFCTEUoT0JKRUNUX01BUktf
TE9HR0lORykKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzUm9wZSgpKSB7CisgICAgY29uc3QgSlNT
dHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNTdHJpbmcqPihjZWxsKTsKKyAgICBv
dXQucHJpbnRmKCI8JXAsICVzLCBbJXVdLCAiLCB0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5jbGFz
c05hbWUoKSwgdGhpc09iamVjdC0+bGVuZ3RoKCkpOyAKKyAgICBpZiAodGhpc09iamVjdC0+aXNS
b3BlKCkpCisgICAgICAgIG91dC5wcmludGYoIltyb3BlXSIpOworICAgIGVsc2UgewogICAgICAg
ICBXVEY6OlN0cmluZ0ltcGwqIG91ckltcGwgPSB0aGlzT2JqZWN0LT5tX3ZhbHVlLmltcGwoKTsK
ICAgICAgICAgaWYgKG91ckltcGwtPmlzOEJpdCgpKQotICAgICAgICAgICAgTUFSS19MT0dfTUVT
U0FHRTEoIls4ICVwXSIsIG91ckltcGwtPmNoYXJhY3RlcnM4KCkpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWzggJXBdIiwgb3VySW1wbC0+Y2hhcmFjdGVyczgoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIE1BUktfTE9HX01FU1NBR0UxKCJbMTYgJXBdIiwgb3VySW1wbC0+Y2hhcmFj
dGVyczE2KCkpOwotICAgIH0gZWxzZQotICAgICAgICBNQVJLX0xPR19NRVNTQUdFMCgiW3JvcGVd
OiAiKTsKLSNlbmRpZgorICAgICAgICAgICAgb3V0LnByaW50ZigiWzE2ICVwXSIsIG91ckltcGwt
PmNoYXJhY3RlcnMxNigpKTsKKyAgICB9CisgICAgb3V0LnByaW50ZigiPiIpOworfQogCit2b2lk
IEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxs
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8SlNSb3Bl
U3RyaW5nKj4odGhpc09iamVjdCktPnZpc2l0RmliZXJzKHZpc2l0b3IpOwogICAgIGVsc2UgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAx
NjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgdHJ5R2V0VmFsdWUoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdHJ5R2V0
VmFsdWVJbXBsKCkgY29uc3Q7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1f
bGVuZ3RoOyB9CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB0
b0Jvb2xlYW4oKSBjb25zdDsKQEAgLTE2Nyw2ICsxNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCisgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBU
b1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgZW51bSB7
CkBAIC0yNDEsNyArMjQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRtcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
eyByZXR1cm4gbV9qc1N0cmluZy0+bV9sZW5ndGg7IH0KKyAgICAgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fanNTdHJpbmctPm1fbGVuZ3RoOyB9CiAKICAgICAgICAg
cHJpdmF0ZToKICAgICAgICAgICAgIHZvaWQgZXhwYW5kKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDYgKzc2LDI2IEBAIHN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgT3AKICAg
ICByZXR1cm4gdmFsdWUuaW5pdChzdHJpbmcpOwogfQogCitzdGF0aWMgYm9vbCBwYXJzZShjb25z
dCBjaGFyKiBzdHJpbmcsIEdDTG9nZ2luZzo6TGV2ZWwmIHZhbHVlKQoreworICAgIGlmICghc3Ry
Y2FzZWNtcChzdHJpbmcsICJub25lIikgfHwgIXN0cmNhc2VjbXAoc3RyaW5nLCAibm8iKSB8fCAh
c3RyY2FzZWNtcChzdHJpbmcsICJmYWxzZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7Cisg
ICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpOb25lOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAoIXN0cmNhc2VjbXAoc3RyaW5nLCAiYmFzaWMiKSB8fCAhc3RyY2FzZWNt
cChzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJ0cnVlIikgfHwgIXN0cmNt
cChzdHJpbmcsICIxIikpIHsKKyAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OkJhc2ljOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNhc2VjbXAoc3RyaW5nLCAi
dmVyYm9zZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMiIpKSB7CisgICAgICAgIHZhbHVlID0gR0NM
b2dnaW5nOjpWZXJib3NlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBib29sIG92ZXJyaWRlT3B0aW9u
V2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgY29uc3QgY2hhciogbmFtZSkKIHsKQEAgLTI4NCw3
ICszMDQsNyBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbihjb25zdCBjaGFyKiBhcmcpCiAjZGVm
aW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8pICAgIFwKICAg
ICBpZiAoIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFsU3RyIC0gYXJnKSkgeyAgICAgICAgXAog
ICAgICAgICB0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHZhbHVlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAg
ICAgICBcCiAgICAgICAgIGlmIChzdWNjZXNzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtMzMwLDYgKzM1MCw5IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihP
cHRpb25JRCBpZCwgRkkKICAgICBjYXNlIG9wdGlvblJhbmdlVHlwZToKICAgICAgICAgZnByaW50
ZihzdHJlYW0sICIlcyIsIHNfb3B0aW9uc1tpZF0udS5vcHRpb25SYW5nZVZhbC5yYW5nZVN0cmlu
ZygpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnY0xvZ0xldmVsVHlwZToKKyAgICAgICAg
ZnByaW50ZihzdHJlYW0sICIlcyIsIEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhzX29wdGlvbnNb
aWRdLnUuZ2NMb2dMZXZlbFZhbCkpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgZnByaW50
ZihzdHJlYW0sICIlcyIsIGZvb3Rlcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgT3B0aW9uc19oCiAjZGVmaW5lIE9wdGlvbnNfaAogCisjaW5jbHVkZSAiR0NMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNp
bmNsdWRlIDxzdGRpby5oPgpAQCAtMjU4LDcgKzI1OSw3IEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ug
b3B0aW9uUmFuZ2U7CiAgICAgdihib29sLCBvYmplY3RzQXJlSW1tb3J0YWwsIGZhbHNlKSBcCiAg
ICAgdihib29sLCBzaG93T2JqZWN0U3RhdGlzdGljcywgZmFsc2UpIFwKICAgICBcCi0gICAgdihi
b29sLCBsb2dHQywgZmFsc2UpIFwKKyAgICB2KGdjTG9nTGV2ZWwsIGxvZ0dDLCBHQ0xvZ2dpbmc6
Ok5vbmUpIFwKICAgICB2KGJvb2wsIGRpc2FibGVHQywgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVk
LCBnY01heEhlYXBTaXplLCAwKSBcCiAgICAgdihib29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZh
bHNlKSBcCkBAIC0zMDMsNiArMzA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZG91YmxlVHlwZSwK
ICAgICAgICAgaW50MzJUeXBlLAogICAgICAgICBvcHRpb25SYW5nZVR5cGUsCisgICAgICAgIGdj
TG9nTGV2ZWxUeXBlLAogICAgIH07CiAKICAgICAvLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9u
IHZhbHVlOgpAQCAtMzEzLDYgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBkb3VibGUg
ZG91YmxlVmFsOwogICAgICAgICAgICAgaW50MzIgaW50MzJWYWw7CiAgICAgICAgICAgICBPcHRp
b25SYW5nZSBvcHRpb25SYW5nZVZhbDsKKyAgICAgICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgZ2NM
b2dMZXZlbFZhbDsKICAgICAgICAgfSB1OwogICAgICAgICBib29sIGRpZE92ZXJyaWRlOwogICAg
IH07CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNC0wNCAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2VkIEdDIGxvZ2dpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTI0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBP
QkpFQ1RfTUFSS19MT0dHSU5HCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNC0wNC0wMyAgWnNvbHQgQm9yYmVseSAgPHpz
Ym9yYmVseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEVu
YWJsZSBDU1MgSklUIGFnYWluLCBpdCB3b3JrcyBmaW5lIGFmdGVyIHIxNjY2NjYuCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyMiwxMCArNjIyLDYgQEAKICNk
ZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFC
TEVfT0JKRUNUX01BUktfTE9HR0lORykKLSNkZWZpbmUgRU5BQkxFX09CSkVDVF9NQVJLX0xPR0dJ
TkcgMAotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfT1BFTkNMKQogI2RlZmluZSBFTkFC
TEVfT1BFTkNMIDAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxNjY4MDcpCisr
KyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NDAsNyArOTQw
LDcgQEAKICNkZWZpbmUgRU5BQkxFX0NPTVBBUkVfQU5EX1NXQVAgMQogI2VuZGlmCiAKLSNpZiAh
ZGVmaW5lZChFTkFCTEVfUEFSQUxMRUxfR0MpICYmICFFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lO
RykgJiYgKE9TKERBUldJTikgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspKSAmJiBF
TkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyNpZiAhZGVmaW5lZChFTkFCTEVfUEFSQUxMRUxfR0Mp
ICYmIChPUyhEQVJXSU4pIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKSkgJiYgRU5B
QkxFKENPTVBBUkVfQU5EX1NXQVApCiAjZGVmaW5lIEVOQUJMRV9QQVJBTExFTF9HQyAxCiAjZW5k
aWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228632</attachid>
            <date>2014-04-04 16:30:51 -0700</date>
            <delta_ts>2014-04-04 16:48:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131246-20140404162820.patch</filename>
            <type>text/plain</type>
            <size>40975</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0dGluZyBkYXRhIG9uIHRoZSBzdGF0ZSBvZiB0aGUgSlND
IEhlYXAgYXQgcnVudGltZSBpcyBjdXJyZW50bHkgaW4gYSBzYWQgc3RhdGUuIAorICAgICAgICBU
aGUgT0JKRUNUX01BUktfTE9HR0lORyBtYWNybyBlbmFibGVzIHNvbWUgYmFzaWMgR0MgbG9nZ2lu
ZywgYnV0IGl0IHJlcXVpcmVzIGEgZnVsbCAKKyAgICAgICAgcmVjb21waWxlIHRvIHR1cm4gaXQg
b24uIEl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgcnVudGltZSBlbmFibGUgb3VyIEdDIGxv
Z2dpbmcgCisgICAgICAgIGluZnJhc3RydWN0dXJlIHdoaWxlIGluY3VycmluZyBtaW5pbWFsIGNv
c3Qgd2hlbiBpdCBpcyBkaXNhYmxlZC4gCisKKyAgICAgICAgSXQgd291bGQgYWxzbyBiZSBuaWNl
IHRvIGdldCBhIGNvbXBsZXRlIHZpZXcgb2YgdGhlIEhlYXAuIEN1cnJlbnRseSBPQkpFQ1RfTUFS
S19MT0dHSU5HIAorICAgICAgICBwcm92aWRlcyB1cyB3aXRoIHRoZSBkaXNjb3ZlcmVkIHJvb3Rz
IGFsb25nIHdpdGggcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMgYXMgb2JqZWN0cyAKKyAgICAg
ICAgYXJlIHNjYW5uZWQuIEhvd2V2ZXIsIG9uY2UgYW4gb2JqZWN0IGlzIHNjYW5uZWQgaXQgd2ls
bCBuZXZlciBiZSBkZWNsYXJlZCBhcyB0aGUgY2hpbGQgCisgICAgICAgIG9mIGFub3RoZXIgb2Jq
ZWN0IGR1cmluZyB0aGF0IGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSB0cmVlLWxpa2Ugdmll
dyBvZiB0aGUgCisgICAgICAgIEhlYXAgKGkuZS4gZWFjaCBzY2FubmVkIG5vZGUgb25seSByZXBv
cnRzIGhhdmluZyBhIHNpbmdsZSBwYXJlbnQpLCB3aGVyZSB0aGUgYWN0dWFsIAorICAgICAgICBI
ZWFwIGNhbiBiZSBhbiBhcmJpdHJhcnkgZ3JhcGguCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBs
YWNlcyBPQkpFQ1RfTUFSS19MT0dHSU5HIGFuZCBnaXZlcyB1cyB0aGVzZSBuaWNlIHRvIGhhdmVz
LiBGaXJzdCBpdCBlbmhhbmNlcyAKKyAgICAgICAgb3VyIGxvZ0dDKCkgcnVudGltZSBPcHRpb24g
YnkgY2hhbmdpbmcgaXQgdG8gYmUgYSB0cmktc3RhdGUgdmFsdWUgb2YgTm9uZSwgQmFzaWMsIG9y
IFZlcmJvc2UgCisgICAgICAgIGxvZ2dpbmcgbGV2ZWxzLiBOb25lIG1lYW5zIG5vIGxvZ2dpbmcg
aXMgZG9uZSwgQmFzaWMgaXMgd2hhdCBsb2dHQygpID0gdHJ1ZSB3b3VsZCBoYXZlIGRvbmUgCisg
ICAgICAgIHByaW9yIHRvIHRoaXMgcGF0Y2gsIGFuZCBWZXJib3NlIGxvZ3MgYWxsIG9iamVjdCBy
ZWxhdGlvbnNoaXBzLgorCisgICAgICAgIEpTQ2VsbCBoYXMgbmV3IGR1bXAvZHVtcFRvU3RyZWFt
IG1ldGhvZHMsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgInZpcnR1YWwiIHRvIGFsbG93IAorICAg
ICAgICBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0cmluZyByZXByZXNlbnRh
dGlvbiB0aGF0IHdpbGwgYmUgZHVtcGVkLiBUaGVzZSAKKyAgICAgICAgbWV0aG9kcyBhbGxvdyBK
U0NlbGxzIHRvIGJlIGR1bXBlZCB1c2luZyB0aGUgc3RhbmRhcmQgZGF0YUxvZygpIGNhbGxzIHNp
bWlsYXIgdG8gbXVjaCBvZgorICAgICAgICB0aGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZSBpbiBv
dXIgY29tcGlsZXJzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgR0NMb2dnaW5n
IGNsYXNzIHRoYXQgaGFuZGxlcyBkdW1waW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2Jq
ZWN0cy4KKyAgICAgICAgSXQgZG9lcyB0aGlzIGJ5IHVzaW5nIHRoZSBwcmUtZXhpc3Rpbmcgdmlz
aXRDaGlsZHJlbiB2aXJ0dWFsIG1ldGhvZHMgdG8gb2J0YWluIHRoZSBpbW1lZGlhdGUKKyAgICAg
ICAgY2hpbGRyZW4gb2YgZWFjaCBsaXZlIGNlbGwgYXQgdGhlIGVuZCBvZiBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWVldHMgb3VyIGdvYWwgb2YgYmVpbmcgbmV1
dHJhbCBvbiB0aGUgYmVuY2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9HQ0xvZ2dpbmcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OkxvZ2dpbmdGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6TG9nZ2luZ0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpMb2dnaW5nRnVu
Y3Rvcjo6bG9nKToKKyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldml2ZUNlbGxzKToK
KyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpT
Qzo6R0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgpOgorICAgICAgICAqIGhlYXAvR0NMb2dnaW5n
Lmg6IEFkZGVkLgorICAgICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheS5oOgorICAgICAgICAo
SlNDOjpHQ1NlZ21lbnRlZEFycmF5OjpiZWdpbik6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVk
QXJyYXk6OmVuZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6dmlzaXRDb21waWxlcldvcmtsaXN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0UHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0VGVtcFNvcnRW
ZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRBcmd1bWVudEJ1ZmZlcnMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp2aXNpdEV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0SGFuZGxlU3RhY2sp
OgorICAgICAgICAoSlNDOjpIZWFwOjp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGluZXMp
OgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6
CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaGVhcC9T
bG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkdW1wKToKKyAgICAg
ICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjptYXJr
U3RhY2spOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjppbnRlcm5hbEFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZHVtcFRvU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpkdW1wVG9TdHJlYW0pOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpS
b3BlQnVpbGRlcjo6bGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA0LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSBmb3IgSlNDb250ZXh0
IGNvbnNvbGUgdG8gbG9nIHRvIHN5c3RlbSBjb25zb2xlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc5NSw2ICs3OTUsNyBAQAogCQkyQTgzNjM4OTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAgKi87IH07CiAJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUFBMzEy
MThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5NENDOCAvKiBT
dHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFCQ0RFNjE4RUYyOTQy
MDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsg
fTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0IxOENB
NUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUQ5NjRBMTg1Njk0MTcwMDFGOTNCRSAv
KiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVB
bGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsKQEAgLTgwMyw2ICs4MDQsNyBAQAogCQkyQUNDRjNERTE4
NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQ0NGM0RDMTg1RkUyNkIw
MDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovOyB9OwogCQkyQUND
RjNERjE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUNDRjNERDE4NUZF
MjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggKi87IH07CiAJCTJB
RDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2
ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKKwkJMkFERkEyNjMxOEVGMzU0MDAw
NEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAq
LzsgfTsKIAkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkEx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9OwogCQkyQUY3Mzgy
RDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdD
OThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtMjI4OCw2ICsyMjkwLDcgQEAK
IAkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg4MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdD
TG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Y3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjI5Niw2ICsyMjk5LDcgQEAKIAkJMkFDQ0YzREMxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3Jl
QmFycmllckVsaXNpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0b3Jl
QmFycmllckVsaXNpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
Q0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJyaWVyRWxpc2lvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRl
cmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJh
dGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBREZBMjYyMThFRjM1
NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFG
NzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlE
VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7
IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAt
MzYzMiw2ICszNjM2LDggQEAKIAkJCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQkyQTgzNjM4ODE4RDdEMEZFMDAwMEVC
Q0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAorCQkJCTJBQUJDREU2MThFRjI5NDIw
MDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLywKKwkJCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0Mg
LyogR0NMb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC00OTUyLDYgKzQ5NTgsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEy
NkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0Iy
QzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTY2NzgsNiArNjY4NSw3
IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVz
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkFERkEyNjMxOEVGMzU0MDAw
NEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFRTE4MjM0MEI0MDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBjaGFyKiBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcoTGV2ZWwgbGV2ZWwpCit7Cisg
ICAgc3dpdGNoIChsZXZlbCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJuICJOb25l
IjsKKyAgICBjYXNlIEJhc2ljOgorICAgICAgICByZXR1cm4gIkJhc2ljIjsKKyAgICBjYXNlIFZl
cmJvc2U6CisgICAgICAgIHJldHVybiAiVmVyYm9zZSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2NsYXNzIExvZ2dpbmdG
dW5jdG9yIHsKK3B1YmxpYzoKKyAgICBMb2dnaW5nRnVuY3RvcihTbG90VmlzaXRvciYgc2xvdFZp
c2l0b3IpCisgICAgICAgIDogbV9zbG90VmlzaXRvcihzbG90VmlzaXRvcikKKyAgICB7CisgICAg
ICAgIG1fc2F2ZWRNYXJrU3RhY2sucmVzaXplKG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuc2l6
ZSgpKTsKKyAgICAgICAgbV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5maWxsVmVjdG9yKG1fc2F2
ZWRNYXJrU3RhY2spOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwp
CisgICAgeworICAgICAgICBtX2xpdmVDZWxscy5hcHBlbmQoY2VsbCk7CisgICAgICAgIE1hcmtl
ZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2xlYXJNYXJrZWQoY2VsbCk7CisgICAgfQorCisgICAg
dm9pZCBsb2coKQorICAgIHsKKyAgICAgICAgbV9zbG90VmlzaXRvci5jbGVhck1hcmtTdGFjaygp
OworICAgICAgICBmb3IgKEpTQ2VsbCogY2VsbCA6IG1fbGl2ZUNlbGxzKSB7CisgICAgICAgICAg
ICBjZWxsLT5tZXRob2RUYWJsZSgpLT52aXNpdENoaWxkcmVuKGNlbGwsIG1fc2xvdFZpc2l0b3Ip
OworICAgICAgICAgICAgZGF0YUxvZygiXG4iLCAqY2VsbCwgIjpcbiIsIG1fc2xvdFZpc2l0b3Ip
OworICAgICAgICAgICAgZm9yIChjb25zdCBKU0NlbGwqIG5laWdoYm9yIDogbV9zbG90VmlzaXRv
ci5tYXJrU3RhY2soKSkKKyAgICAgICAgICAgICAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IobmVp
Z2hib3IpLT5jbGVhck1hcmtlZChuZWlnaGJvcik7CisgICAgICAgICAgICBtX3Nsb3RWaXNpdG9y
LmNsZWFyTWFya1N0YWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9zbG90VmlzaXRvci5yZXNl
dCgpOworICAgIH0KKworICAgIHZvaWQgcmV2aXZlQ2VsbHMoKQorICAgIHsKKyAgICAgICAgZm9y
IChKU0NlbGwqIGNlbGwgOiBtX2xpdmVDZWxscykKKyAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpi
bG9ja0ZvcihjZWxsKS0+c2V0TWFya2VkKGNlbGwpOworCisgICAgICAgIGZvciAoY29uc3QgSlND
ZWxsKiBjZWxsIDogbV9zYXZlZE1hcmtTdGFjaykgeworICAgICAgICAgICAgbV9zbG90VmlzaXRv
ci5tYXJrU3RhY2soKS5hcHBlbmQoY2VsbCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLT5zZXRSZW1lbWJlcmVkKHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAg
dHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CisKKyAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9Owor
Citwcml2YXRlOgorICAgIFZlY3Rvcjxjb25zdCBKU0NlbGwqPiBtX3NhdmVkTWFya1N0YWNrOwor
ICAgIFZlY3RvcjxKU0NlbGwqPiBtX2xpdmVDZWxsczsKKyAgICBTbG90VmlzaXRvciYgbV9zbG90
VmlzaXRvcjsKK307CisKK3ZvaWQgR0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgoSGVhcCogaGVh
cCkKK3sKKyAgICBMb2dnaW5nRnVuY3RvciBsb2dnaW5nRnVuY3RvcihoZWFwLT5tX3Nsb3RWaXNp
dG9yKTsKKyAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKmhlYXApOworICAg
IGhlYXAtPm9iamVjdFNwYWNlKCkuZm9yRWFjaExpdmVDZWxsKGl0ZXJhdGlvblNjb3BlLCBsb2dn
aW5nRnVuY3Rvcik7CisgICAgbG9nZ2luZ0Z1bmN0b3IubG9nKCk7CisgICAgbG9nZ2luZ0Z1bmN0
b3IucmV2aXZlQ2VsbHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDTG9nZ2luZ19oCisjZGVmaW5lIEdDTG9nZ2luZ19o
CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSGVhcDsKKworY2xhc3MgR0NMb2dnaW5nIHsKK3B1YmxpYzoKKyAgICBlbnVtIExldmVsIDog
dWludDhfdCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBCYXNpYywKKyAgICAgICAgVmVy
Ym9zZQorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbGV2ZWxBc1N0cmluZyhMZXZl
bCk7CisgICAgc3RhdGljIHZvaWQgZHVtcE9iamVjdEdyYXBoKEhlYXAqKTsKK307CisKK3R5cGVk
ZWYgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEdDTG9nZ2luZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q1NlZ21lbnRlZEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvR0NTZWdtZW50ZWRBcnJheS5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdDU2VnbWVudGVkQQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBHQ1NlZ21lbnRlZEFycmF5IHsKICAgICBmcmllbmQgY2xh
c3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+OworICAgIGZyaWVuZCBjbGFzcyBHQ1NlZ21l
bnRlZEFycmF5SXRlcmF0b3I8Y29uc3QgVD47CiBwdWJsaWM6CiAgICAgR0NTZWdtZW50ZWRBcnJh
eShCbG9ja0FsbG9jYXRvciYpOwogICAgIH5HQ1NlZ21lbnRlZEFycmF5KCk7CkBAIC04MSw4ICs4
Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICB0eXBlZGVmIEdDU2VnbWVu
dGVkQXJyYXlJdGVyYXRvcjxUPiBpdGVyYXRvcjsKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0
dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPihtX3NlZ21lbnRzLmhlYWQoKSwgbV90b3Ap
OyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9y
PFQ+KCk7IH0KKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEdDU2VnbWVudGVk
QXJyYXlJdGVyYXRvcjxUPihtX3NlZ21lbnRzLmhlYWQoKSwgbV90b3ApOyB9CisgICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+KCk7IH0K
IAogcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4gc3RydWN0IENhcGFjaXR5
RnJvbVNpemUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzQsMTcgKzQ3NCwxMyBAQCB2b2lkIEhlYXA6OmdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoCiAgICAgfQogfQogCi12b2lkIEhlYXA6Om1hcmtSb290cygpCit2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjogTWFya2luZyIpOwogCiAgICAgR0NQ
SEFTRShNYXJrUm9vdHMpOwogICAgIEFTU0VSVChpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpOwog
Ci0jaWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xPR0dJTkcpCi0gICAgZG91YmxlIGdjU3RhcnRUaW1l
ID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEdHQykKICAgICBWZWN0b3I8Y29uc3QgSlNDZWxsKj4gcmVtZW1iZXJlZFNldChtX3Nsb3RW
aXNpdG9yLm1hcmtTdGFjaygpLnNpemUoKSk7CiAgICAgbV9zbG90VmlzaXRvci5tYXJrU3RhY2so
KS5maWxsVmVjdG9yKHJlbWVtYmVyZWRTZXQpOwpAQCAtNTM1LDcgKzUzMSw3IEBAIHZvaWQgSGVh
cDo6bWFya1Jvb3RzKCkKIAogICAgIGNsZWFyUmVtZW1iZXJlZFNldChyZW1lbWJlcmVkU2V0KTsK
ICAgICBtX3NoYXJlZERhdGEuZGlkRmluaXNoTWFya2luZygpOwotICAgIHVwZGF0ZU9iamVjdENv
dW50cygpOworICAgIHVwZGF0ZU9iamVjdENvdW50cyhnY1N0YXJ0VGltZSk7CiAgICAgcmVzZXRW
aXNpdG9ycygpOwogfQogCkBAIC01OTksMTMgKzU5NSwyMSBAQCB2b2lkIEhlYXA6OnZpc2l0U21h
bGxTdHJpbmdzKCkKIHsKICAgICBHQ1BIQVNFKFZpc2l0U21hbGxTdHJpbmdzKTsKICAgICBtX3Zt
LT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2VzKG1fc2xvdFZpc2l0b3IpOworCisg
ICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJTbWFsbCBzdHJpbmdzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKKyAgICBtX3Nsb3RW
aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRDb25zZXJ2YXRp
dmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCiB7CiAgICAgR0NQSEFTRShWaXNpdENv
bnNlcnZhdGl2ZVJvb3RzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJDb25z
ZXJ2YXRpdmUgUm9vdHMiKTsKICAgICBtX3Nsb3RWaXNpdG9yLmFwcGVuZChyb290cyk7CisKKyAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2coIkNvbnNlcnZhdGl2ZSBSb290czpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCkBAIC02MTMsMjkgKzYxNywzNCBAQCB2
b2lkIEhlYXA6OnZpc2l0Q29tcGlsZXJXb3JrbGlzdHMoKQogewogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIEdDUEhBU0UoVmlzaXRERkdXb3JrbGlzdHMpOwotICAgIE1BUktfTE9HX1JPT1QobV9z
bG90VmlzaXRvciwgIkRGRyBXb3JrbGlzdHMiKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBERkc6
Om51bWJlck9mV29ya2xpc3RzKCk7IGktLTspIHsKICAgICAgICAgaWYgKERGRzo6V29ya2xpc3Qq
IHdvcmtsaXN0ID0gREZHOjp3b3JrbGlzdEZvckluZGV4T3JOdWxsKGkpKQogICAgICAgICAgICAg
d29ya2xpc3QtPnZpc2l0Q2hpbGRyZW4obV9zbG90VmlzaXRvciwgbV9jb2RlQmxvY2tzKTsKICAg
ICB9CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkRGRyBXb3JrbGlzdHM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKworICAg
IG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKICNlbmRpZgogfQogCiB2b2lkIEhlYXA6
OnZpc2l0UHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikK
IHsKICAgICBHQ1BIQVNFKFZpc2l0UHJvdGVjdGVkT2JqZWN0cyk7Ci0gICAgTUFSS19MT0dfUk9P
VChtX3Nsb3RWaXNpdG9yLCAiUHJvdGVjdGVkIE9iamVjdHMiKTsKIAogICAgIGZvciAoYXV0byYg
cGFpciA6IG1fcHJvdGVjdGVkVmFsdWVzKQogICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQo
JnBhaXIua2V5KTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVy
Ym9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJvdGVjdGVkIE9iamVjdHM6XG4iLCBtX3Nsb3RWaXNp
dG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9pZCBI
ZWFwOjp2aXNpdFRlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRv
cikKIHsKICAgICBHQ1BIQVNFKFZpc2l0VGVtcFNvcnRWZWN0b3JzKTsKLSAgICBNQVJLX0xPR19S
T09UKG1fc2xvdFZpc2l0b3IsICJUZW1wIFNvcnQgVmVjdG9ycyIpOwotCiAgICAgdHlwZWRlZiBW
ZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+Kj4g
VmVjdG9yT2ZWYWx1ZVN0cmluZ1ZlY3RvcnM7CiAKICAgICBmb3IgKGF1dG8qIHZlY3RvciA6IG1f
dGVtcFNvcnRpbmdWZWN0b3JzKSB7CkBAIC02NDQsNTMgKzY1Myw3MiBAQCB2b2lkIEhlYXA6OnZp
c2l0VGVtcFNvcnRWZWN0b3JzKEhlYXBSb290CiAgICAgICAgICAgICAgICAgaGVhcFJvb3RWaXNp
dG9yLnZpc2l0KCZ2YWx1ZVN0cmluZ1BhaXIuZmlyc3QpOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJUZW1wIFNvcnQgVmVjdG9yczpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCiB2b2lkIEhlYXA6OnZpc2l0QXJndW1l
bnRCdWZmZXJzKEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKE1hcmtp
bmdBcmd1bWVudEJ1ZmZlcnMpOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIkFy
Z3VtZW50IEJ1ZmZlcnMiKTsKICAgICBpZiAoIW1fbWFya0xpc3RTZXQgfHwgIW1fbWFya0xpc3RT
ZXQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6
Om1hcmtMaXN0cyh2aXNpdG9yLCAqbV9tYXJrTGlzdFNldCk7CisKKyAgICBpZiAoT3B0aW9uczo6
bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFyZ3VtZW50
IEJ1ZmZlcnM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRl
QW5kRHJhaW4oKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4Y2VwdGlvbihIZWFwUm9vdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShNYXJraW5nRXhjZXB0aW9uKTsKLSAgICBNQVJL
X0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJFeGNlcHRpb25zIik7CiAgICAgaWYgKCFtX3ZtLT5l
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmlzaXRvci52aXNpdChtX3ZtLT5h
ZGRyZXNzT2ZFeGNlcHRpb24oKSk7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xv
Z2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkV4Y2VwdGlvbnM6XG4iLCBtX3Nsb3RW
aXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9p
ZCBIZWFwOjp2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIEdDUEhBU0UoVmlzaXRTdHJvbmdIYW5kbGVzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xv
dFZpc2l0b3IsICJTdHJvbmcgSGFuZGxlcyIpOwogICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25n
SGFuZGxlcyh2aXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2lu
Zzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiU3Ryb25nIEhhbmRsZXM6XG4iLCBtX3Nsb3RW
aXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9p
ZCBIZWFwOjp2aXNpdEhhbmRsZVN0YWNrKEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBHQ1BIQVNFKFZpc2l0SGFuZGxlU3RhY2spOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90Vmlz
aXRvciwgIkhhbmRsZSBTdGFjayIpOwogICAgIG1faGFuZGxlU3RhY2sudmlzaXQodmlzaXRvcik7
CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAg
ICAgIGRhdGFMb2coIkhhbmRsZSBTdGFjazpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCiB2b2lkIEhlYXA6OnRyYWNlQ29kZUJs
b2Nrc0FuZEpJVFN0dWJSb3V0aW5lcygpCiB7CiAgICAgR0NQSEFTRShUcmFjZUNvZGVCbG9ja3NB
bmRKSVRTdHViUm91dGluZXMpOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIlRy
YWNlIENvZGUgQmxvY2tzIGFuZCBKSVQgU3R1YiBSb3V0aW5lcyIpOwogICAgIG1fY29kZUJsb2Nr
cy50cmFjZU1hcmtlZChtX3Nsb3RWaXNpdG9yKTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy50cmFj
ZU1hcmtlZFN0dWJSb3V0aW5lcyhtX3Nsb3RWaXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjps
b2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiQ29kZSBCbG9j
a3MgYW5kIEpJVCBTdHViIFJvdXRpbmVzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Ns
b3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKQEAgLTcwNSwxMiArNzMzLDE1IEBAIHZv
aWQgSGVhcDo6Y29udmVyZ2UoKQogdm9pZCBIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKFZpc2l0aW5nTGl2ZVdlYWtIYW5kbGVz
KTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJMaXZlIFdlYWsgSGFuZGxlcyIp
OwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0
cyh2aXNpdG9yKTsKICAgICAgICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgIGlm
IChtX3Nsb3RWaXNpdG9yLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgICAg
IGRhdGFMb2coIkxpdmUgV2VhayBIYW5kbGVzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICAg
ICAgewogICAgICAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKG1fc2xvdFZpc2l0
b3IpOwogICAgICAgICAgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwpAQCAtNzM0
LDE3ICs3NjUsMTcgQEAgdm9pZCBIZWFwOjpjbGVhclJlbWVtYmVyZWRTZXQoVmVjdG9yPGNvbgog
I2VuZGlmCiB9CiAKLXZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKCkKK3ZvaWQgSGVhcDo6
dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1N0YXJ0VGltZSkKIHsKICAgICBHQ0NPVU5URVIo
VmlzaXRlZFZhbHVlQ291bnQsIG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgpKTsKIAotI2lmIEVO
QUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAgIHNpemVfdCB2aXNpdENvdW50ID0gbV9zbG90
VmlzaXRvci52aXNpdENvdW50KCk7CisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dn
aW5nOjpWZXJib3NlKSB7CisgICAgICAgIHNpemVfdCB2aXNpdENvdW50ID0gbV9zbG90VmlzaXRv
ci52aXNpdENvdW50KCk7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHZpc2l0Q291bnQg
Kz0gbV9zaGFyZWREYXRhLmNoaWxkVmlzaXRDb3VudCgpOwotI2VuZGlmCi0gICAgTUFSS19MT0df
TUVTU0FHRTIoIlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0cyBhZnRlciBmdWxsIEdDICVsdSwgdG9v
ayAlLjZmIHNlY3NcbiIsIHZpc2l0Q291bnQsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgLSBnY1N0YXJ0VGltZSk7CisgICAgICAgIHZpc2l0Q291bnQgKz0gbV9zaGFyZWREYXRh
LmNoaWxkVmlzaXRDb3VudCgpOwogI2VuZGlmCisgICAgICAgIGRhdGFMb2dGKCJcbk51bWJlciBv
ZiBsaXZlIE9iamVjdHMgYWZ0ZXIgR0MgJWx1LCB0b29rICUuNmYgc2Vjc1xuIiwgdmlzaXRDb3Vu
dCwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdjU3RhcnRUaW1lKTsKKyAg
ICB9CiAKICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7
CiAgICAgICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0
ZWQoKTsKQEAgLTk1MSw3ICs5ODIsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlv
biBjb2xsZWN0CiAgICAgc3RvcEFsbG9jYXRpb24oKTsKICAgICBmbHVzaFdyaXRlQmFycmllckJ1
ZmZlcigpOwogCi0gICAgbWFya1Jvb3RzKCk7CisgICAgbWFya1Jvb3RzKGdjU3RhcnRUaW1lKTsK
IAogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX01BUktFRCgpOwogCkBAIC0xMTc4LDYgKzEyMDksOSBA
QCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAKICAgICBpZiAoT3B0
aW9uczo6c2hvd09iamVjdFN0YXRpc3RpY3MoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnNo
b3dPYmplY3RTdGF0aXN0aWNzKHRoaXMpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0g
R0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBHQ0xvZ2dpbmc6OmR1bXBPYmplY3RHcmFwaCh0
aGlzKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDcgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKICAgICBmcmllbmQg
Y2xhc3MgRGVsYXllZFJlbGVhc2VTY29wZTsKICAgICBmcmllbmQgY2xhc3MgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOworICAgIGZyaWVuZCBjbGFzcyBHQ0xvZ2dpbmc7CiAgICAgZnJpZW5kIGNsYXNz
IEhhbmRsZVNldDsKICAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTI2MSw3ICsyNjIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxv
Y2F0aW9uKCk7CiAKLSAgICB2b2lkIG1hcmtSb290cygpOworICAgIHZvaWQgbWFya1Jvb3RzKGRv
dWJsZSBnY1N0YXJ0VGltZSk7CiAgICAgdm9pZCBnYXRoZXJTdGFja1Jvb3RzKENvbnNlcnZhdGl2
ZVJvb3RzJiwgdm9pZCoqIGR1bW15KTsKICAgICB2b2lkIGdhdGhlckpTU3RhY2tSb290cyhDb25z
ZXJ2YXRpdmVSb290cyYpOwogICAgIHZvaWQgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJik7CkBAIC0yNzksNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bnZlcmdlKCk7CiAgICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwog
ICAgIHZvaWQgY2xlYXJSZW1lbWJlcmVkU2V0KFZlY3Rvcjxjb25zdCBKU0NlbGwqPiYpOwotICAg
IHZvaWQgdXBkYXRlT2JqZWN0Q291bnRzKCk7CisgICAgdm9pZCB1cGRhdGVPYmplY3RDb3VudHMo
ZG91YmxlIGdjU3RhcnRUaW1lKTsKICAgICB2b2lkIHJlc2V0VmlzaXRvcnMoKTsKIAogICAgIHZv
aWQgcmVhcFdlYWtIYW5kbGVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMwICsyNiw2IEBACiAjaWZuZGVmIE1h
cmtTdGFja19oCiAjZGVmaW5lIE1hcmtTdGFja19oCiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktf
TE9HR0lORykKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTAobWVzc2FnZSkgZGF0YUxvZ0YobWVz
c2FnZSkKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTEobWVzc2FnZSwgYXJnMSkgZGF0YUxvZ0Yo
bWVzc2FnZSwgYXJnMSkKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTIobWVzc2FnZSwgYXJnMSwg
YXJnMikgZGF0YUxvZ0YobWVzc2FnZSwgYXJnMSwgYXJnMikKLSNkZWZpbmUgTUFSS19MT0dfUk9P
VCh2aXNpdG9yLCByb290TmFtZSkgXAotICAgIGRhdGFMb2dGKCJcbiVzOiAiLCByb290TmFtZSk7
IFwKLSAgICAodmlzaXRvcikucmVzZXRDaGlsZENvdW50KCkKLSNkZWZpbmUgTUFSS19MT0dfUEFS
RU5UKHZpc2l0b3IsIHBhcmVudCkgXAotICAgIGRhdGFMb2dGKCJcbiVwICglcyk6ICIsIHBhcmVu
dCwgcGFyZW50LT5jbGFzc05hbWUoKSA/IHBhcmVudC0+Y2xhc3NOYW1lKCkgOiAidW5rbm93biIp
OyBcCi0gICAgKHZpc2l0b3IpLnJlc2V0Q2hpbGRDb3VudCgpCi0jZGVmaW5lIE1BUktfTE9HX0NI
SUxEKHZpc2l0b3IsIGNoaWxkKSBcCi0gICAgaWYgKCh2aXNpdG9yKS5jaGlsZENvdW50KCkpIFwK
LSAgICBkYXRhTG9nRlN0cmluZygiLCAiKTsgXAotICAgIGRhdGFMb2dGKCIlcCIsIGNoaWxkKTsg
XAotICAgICh2aXNpdG9yKS5pbmNyZW1lbnRDaGlsZENvdW50KCkKLSNlbHNlCi0jZGVmaW5lIE1B
UktfTE9HX01FU1NBR0UwKG1lc3NhZ2UpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1B
UktfTE9HX01FU1NBR0UxKG1lc3NhZ2UsIGFyZzEpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVm
aW5lIE1BUktfTE9HX01FU1NBR0UyKG1lc3NhZ2UsIGFyZzEsIGFyZzIpIGRvIHsgfSB3aGlsZSAo
ZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX1JPT1QodmlzaXRvciwgcm9vdE5hbWUpIGRvIHsgfSB3
aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBwYXJlbnQpIGRv
IHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX0NISUxEKHZpc2l0b3IsIGNoaWxk
KSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2VuZGlmCi0KICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFy
cmF5SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcz
LDQgKzM3MywxMCBAQCB2b2lkIFNsb3RWaXNpdG9yOjp2YWxpZGF0ZShKU0NlbGwqKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgU2xvdFZpc2l0b3I6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAoreworICAg
IGZvciAoY29uc3QgSlNDZWxsKiBjZWxsIDogbWFya1N0YWNrKCkpCisgICAgICAgIGRhdGFMb2co
KmNlbGwsICJcbiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBwdWJsaWM6CiAgICAgflNsb3RWaXNpdG9yKCk7CiAKICAgICBNYXJrU3RhY2tB
cnJheSYgbWFya1N0YWNrKCkgeyByZXR1cm4gbV9zdGFjazsgfQorICAgIGNvbnN0IE1hcmtTdGFj
a0FycmF5JiBtYXJrU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3N0YWNrOyB9CiAKICAgICBWTSYg
dm0oKTsKICAgICBjb25zdCBWTSYgdm0oKSBjb25zdDsKQEAgLTEwOSwxMSArMTEwLDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5jZUhh
cnZlc3RlciopOwogICAgIHZvaWQgYWRkVW5jb25kaXRpb25hbEZpbmFsaXplcihVbmNvbmRpdGlv
bmFsRmluYWxpemVyKik7CiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykKICAgICBp
bmxpbmUgdm9pZCByZXNldENoaWxkQ291bnQoKSB7IG1fbG9nQ2hpbGRDb3VudCA9IDA7IH0KICAg
ICBpbmxpbmUgdW5zaWduZWQgY2hpbGRDb3VudCgpIHsgcmV0dXJuIG1fbG9nQ2hpbGRDb3VudDsg
fQogICAgIGlubGluZSB2b2lkIGluY3JlbWVudENoaWxkQ291bnQoKSB7IG1fbG9nQ2hpbGRDb3Vu
dCsrOyB9Ci0jZW5kaWYKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyOwpAQCAtMTQ4LDkg
KzE0OSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBKU1Zh
bHVlPiBVbmlxdWVTdHJpbmdNYXA7CiAgICAgVW5pcXVlU3RyaW5nTWFwIG1fdW5pcXVlU3RyaW5n
czsKIAotI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQogICAgIHVuc2lnbmVkIG1fbG9n
Q2hpbGRDb3VudDsKLSNlbmRpZgogCiBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJ
KHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOCArMTE2LDYgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFNsb3RWaXNpdG9yOjppbnRlcm5hbAogICAgIGNlbGwtPnNldE1hcmtlZCgpOwog
ICAgIG1fYnl0ZXNWaXNpdGVkICs9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2VsbFNp
emUoKTsKICAgICAgICAgCi0gICAgTUFSS19MT0dfQ0hJTEQoKnRoaXMsIGNlbGwpOwotCiAgICAg
dW5jb25kaXRpb25hbGx5QXBwZW5kKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAKICAgICB0eXBlZGVmIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXJWaWV3PiAoKkdldFR5cGVkQXJyYXlJbXBsKShKU0FycmF5QnVmZmVyVmll
dyopOwogICAgIEdldFR5cGVkQXJyYXlJbXBsIGdldFR5cGVkQXJyYXlJbXBsOworCisgICAgdHlw
ZWRlZiB2b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIpKGNvbnN0IEpTQ2VsbCosIFByaW50
U3RyZWFtJik7CisgICAgRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIgZHVtcFRvU3RyZWFtOwogfTsK
IAogI2RlZmluZSBDUkVBVEVfTUVNQkVSX0NIRUNLRVIobWVtYmVyKSBcCkBAIC0xMzgsNyArMTQx
LDggQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFz
SW5zdGFuY2UsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwKICAg
ICAgICAgJkNsYXNzTmFtZTo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSwgXAotICAgICAgICAmQ2xh
c3NOYW1lOjpnZXRUeXBlZEFycmF5SW1wbCBcCisgICAgICAgICZDbGFzc05hbWU6OmdldFR5cGVk
QXJyYXlJbXBsLCBcCisgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSBcCiAgICAgfSwg
XAogICAgIENsYXNzTmFtZTo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTY2ODA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsMTYgQEAgdm9pZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGNl
bGwtPkpTQ2VsbDo6fkpTQ2VsbCgpOwogfQogCit2b2lkIEpTQ2VsbDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIG1ldGhvZFRhYmxlKCktPmR1bXBUb1N0cmVhbSh0aGlzLCBv
dXQpOworfQorCit2b2lkIEpTQ2VsbDo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwg
UHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBvdXQucHJpbnRmKCI8JXAsICVzPiIsIGNlbGwsIGNl
bGwtPmNsYXNzTmFtZSgpKTsKK30KKwogdm9pZCBKU0NlbGw6OmNvcHlCYWNraW5nU3RvcmUoSlND
ZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pCiB7CiB9CkBAIC0xOTIsNyArMjAyLDcgQEAg
U3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KgogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAotY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoKQorY29uc3QgY2hhciog
SlNDZWxsOjpjbGFzc05hbWUoKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+Y2xh
c3NOYW1lOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgVHlwZUlu
Zm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzOyB9CiAKLSAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUoKTsKKyAgICBjb25zdCBjaGFyKiBj
bGFzc05hbWUoKSBjb25zdDsKIAogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFN0cmluZyYpIGNvbnN0
OwpAQCAtMTIzLDYgKzEyMyw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBD
b3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA2LDggKzEwNiw2IEBAIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKFZNJiAK
IAogaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgTUFSS19MT0dfUEFSRU5UKHZpc2l0b3IsIGNlbGwpOwot
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodmlzaXRvci52bSgp
KTsKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlz
aW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMjQgKzQ5LDI3IEBAIHZvaWQgSlNTdHJpbmc6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsK
IH0KIAotdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCog
Y2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgCi0gICAgTUFSS19MT0dfTUVTU0FHRTEoIlsldV06ICIsIHRoaXNP
YmplY3QtPmxlbmd0aCgpKTsKLQotI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAg
IGlmICghdGhpc09iamVjdC0+aXNSb3BlKCkpIHsKKyAgICBjb25zdCBKU1N0cmluZyogdGhpc09i
amVjdCA9IGpzQ2FzdDxjb25zdCBKU1N0cmluZyo+KGNlbGwpOworICAgIG91dC5wcmludGYoIjwl
cCwgJXMsIFsldV0sICIsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNsYXNzTmFtZSgpLCB0aGlz
T2JqZWN0LT5sZW5ndGgoKSk7IAorICAgIGlmICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKKyAgICAg
ICAgb3V0LnByaW50ZigiW3JvcGVdIik7CisgICAgZWxzZSB7CiAgICAgICAgIFdURjo6U3RyaW5n
SW1wbCogb3VySW1wbCA9IHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpOwogICAgICAgICBpZiAo
b3VySW1wbC0+aXM4Qml0KCkpCi0gICAgICAgICAgICBNQVJLX0xPR19NRVNTQUdFMSgiWzggJXBd
Iiwgb3VySW1wbC0+Y2hhcmFjdGVyczgoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbOCAl
cF0iLCBvdXJJbXBsLT5jaGFyYWN0ZXJzOCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
TUFSS19MT0dfTUVTU0FHRTEoIlsxNiAlcF0iLCBvdXJJbXBsLT5jaGFyYWN0ZXJzMTYoKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIE1BUktfTE9HX01FU1NBR0UwKCJbcm9wZV06ICIpOwotI2VuZGlm
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbMTYgJXBdIiwgb3VySW1wbC0+Y2hhcmFjdGVyczE2
KCkpOworICAgIH0KKyAgICBvdXQucHJpbnRmKCI+Iik7Cit9CiAKK3ZvaWQgSlNTdHJpbmc6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzUm9wZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcqPih0aGlz
T2JqZWN0KS0+dmlzaXRGaWJlcnModmlzaXRvcik7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB2
YWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cnlHZXRWYWx1
ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB0cnlHZXRWYWx1ZUltcGwoKSBj
b25zdDsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAg
ICAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHRvQm9vbGVhbigpIGNv
bnN0OwpAQCAtMTY3LDYgKzE2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0
IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBlbnVtIHsKQEAgLTI0MSw3ICsy
NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdG1wOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2pz
U3RyaW5nLT5tX2xlbmd0aDsgfQorICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9qc1N0cmluZy0+bV9sZW5ndGg7IH0KIAogICAgICAgICBwcml2YXRlOgogICAg
ICAgICAgICAgdm9pZCBleHBhbmQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMjYgQEAg
c3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBPcAogICAgIHJldHVybiB2YWx1
ZS5pbml0KHN0cmluZyk7CiB9CiAKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCit7CisgICAgaWYgKCFzdHJjYXNlY21wKHN0cmlu
ZywgIm5vbmUiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJubyIpIHx8ICFzdHJjYXNlY21wKHN0
cmluZywgImZhbHNlIikgfHwgIXN0cmNtcChzdHJpbmcsICIwIikpIHsKKyAgICAgICAgdmFsdWUg
PSBHQ0xvZ2dpbmc6Ok5vbmU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
ICghc3RyY2FzZWNtcChzdHJpbmcsICJiYXNpYyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgInll
cyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgInRydWUiKSB8fCAhc3RyY21wKHN0cmluZywgIjEi
KSkgeworICAgICAgICB2YWx1ZSA9IEdDTG9nZ2luZzo6QmFzaWM7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmICghc3RyY2FzZWNtcChzdHJpbmcsICJ2ZXJib3NlIikgfHwg
IXN0cmNtcChzdHJpbmcsICIyIikpIHsKKyAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OlZlcmJv
c2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGlj
KFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lKQogewpAQCAtMjg0LDcgKzMwNCw3IEBAIGJv
b2wgT3B0aW9uczo6c2V0T3B0aW9uKGNvbnN0IGNoYXIqIGFyZykKICNkZWZpbmUgRk9SX0VBQ0hf
T1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXykgICAgXAogICAgIGlmICghc3RybmNt
cChhcmcsICNuYW1lXywgZXF1YWxTdHIgLSBhcmcpKSB7ICAgICAgICBcCiAgICAgICAgIHR5cGVf
IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFs
dWUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2
YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3RyLCB2YWx1ZSk7ICAgICAgICAgIFwKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBA
IC0zMzAsNiArMzUwLDkgQEAgdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKE9wdGlvbklEIGlkLCBG
SQogICAgIGNhc2Ugb3B0aW9uUmFuZ2VUeXBlOgogICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVz
Iiwgc19vcHRpb25zW2lkXS51Lm9wdGlvblJhbmdlVmFsLnJhbmdlU3RyaW5nKCkpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIGdjTG9nTGV2ZWxUeXBlOgorICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVzIiwgR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKHNfb3B0aW9uc1tpZF0udS5nY0xvZ0xl
dmVsVmFsKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBmcHJpbnRmKHN0cmVhbSwgIiVz
IiwgZm9vdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBPcHRpb25z
X2gKICNkZWZpbmUgT3B0aW9uc19oCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC0yNTgsNyArMjU5LDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsK
ICAgICB2KGJvb2wsIG9iamVjdHNBcmVJbW1vcnRhbCwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNo
b3dPYmplY3RTdGF0aXN0aWNzLCBmYWxzZSkgXAogICAgIFwKLSAgICB2KGJvb2wsIGxvZ0dDLCBm
YWxzZSkgXAorICAgIHYoZ2NMb2dMZXZlbCwgbG9nR0MsIEdDTG9nZ2luZzo6Tm9uZSkgXAogICAg
IHYoYm9vbCwgZGlzYWJsZUdDLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNp
emUsIDApIFwKICAgICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKQEAgLTMw
Myw2ICszMDQsNyBAQCBwcml2YXRlOgogICAgICAgICBkb3VibGVUeXBlLAogICAgICAgICBpbnQz
MlR5cGUsCiAgICAgICAgIG9wdGlvblJhbmdlVHlwZSwKKyAgICAgICAgZ2NMb2dMZXZlbFR5cGUs
CiAgICAgfTsKIAogICAgIC8vIEZvciBzdG9yaW5nIGZvciBhbiBvcHRpb24gdmFsdWU6CkBAIC0z
MTMsNiArMzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWw7CiAg
ICAgICAgICAgICBpbnQzMiBpbnQzMlZhbDsKICAgICAgICAgICAgIE9wdGlvblJhbmdlIG9wdGlv
blJhbmdlVmFsOworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsVmFsOwog
ICAgICAgICB9IHU7CiAgICAgICAgIGJvb2wgZGlkT3ZlcnJpZGU7CiAgICAgfTsKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNjY4MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIE9CSkVDVF9NQVJLX0xP
R0dJTkcKKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorCiAyMDE0LTA0LTAzICBac29sdCBCb3JiZWx5ICA8enNib3JiZWx5LnUtc3pl
Z2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIENTUyBKSVQg
YWdhaW4sIGl0IHdvcmtzIGZpbmUgYWZ0ZXIgcjE2NjY2Ni4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIyLDEwICs2MjIsNiBAQAogI2RlZmluZSBFTkFCTEVf
Tk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9PQkpFQ1RfTUFS
S19MT0dHSU5HKQotI2RlZmluZSBFTkFCTEVfT0JKRUNUX01BUktfTE9HR0lORyAwCi0jZW5kaWYK
LQogI2lmICFkZWZpbmVkKEVOQUJMRV9PUEVOQ0wpCiAjZGVmaW5lIEVOQUJMRV9PUEVOQ0wgMAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0MCw3ICs5NDAsNyBAQAogI2RlZmlu
ZSBFTkFCTEVfQ09NUEFSRV9BTkRfU1dBUCAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJM
RV9QQVJBTExFTF9HQykgJiYgIUVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKSAmJiAoT1MoREFS
V0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykpICYmIEVOQUJMRShDT01QQVJF
X0FORF9TV0FQKQorI2lmICFkZWZpbmVkKEVOQUJMRV9QQVJBTExFTF9HQykgJiYgKE9TKERBUldJ
TikgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspKSAmJiBFTkFCTEUoQ09NUEFSRV9B
TkRfU1dBUCkKICNkZWZpbmUgRU5BQkxFX1BBUkFMTEVMX0dDIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228633</attachid>
            <date>2014-04-04 16:48:42 -0700</date>
            <delta_ts>2014-04-04 17:38:35 -0700</delta_ts>
            <desc>fix ports</desc>
            <filename>bug-131246-20140404164610.patch</filename>
            <type>text/plain</type>
            <size>43634</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0dGluZyBkYXRhIG9uIHRoZSBzdGF0ZSBvZiB0aGUgSlND
IEhlYXAgYXQgcnVudGltZSBpcyBjdXJyZW50bHkgaW4gYSBzYWQgc3RhdGUuIAorICAgICAgICBU
aGUgT0JKRUNUX01BUktfTE9HR0lORyBtYWNybyBlbmFibGVzIHNvbWUgYmFzaWMgR0MgbG9nZ2lu
ZywgYnV0IGl0IHJlcXVpcmVzIGEgZnVsbCAKKyAgICAgICAgcmVjb21waWxlIHRvIHR1cm4gaXQg
b24uIEl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgcnVudGltZSBlbmFibGUgb3VyIEdDIGxv
Z2dpbmcgCisgICAgICAgIGluZnJhc3RydWN0dXJlIHdoaWxlIGluY3VycmluZyBtaW5pbWFsIGNv
c3Qgd2hlbiBpdCBpcyBkaXNhYmxlZC4gCisKKyAgICAgICAgSXQgd291bGQgYWxzbyBiZSBuaWNl
IHRvIGdldCBhIGNvbXBsZXRlIHZpZXcgb2YgdGhlIEhlYXAuIEN1cnJlbnRseSBPQkpFQ1RfTUFS
S19MT0dHSU5HIAorICAgICAgICBwcm92aWRlcyB1cyB3aXRoIHRoZSBkaXNjb3ZlcmVkIHJvb3Rz
IGFsb25nIHdpdGggcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMgYXMgb2JqZWN0cyAKKyAgICAg
ICAgYXJlIHNjYW5uZWQuIEhvd2V2ZXIsIG9uY2UgYW4gb2JqZWN0IGlzIHNjYW5uZWQgaXQgd2ls
bCBuZXZlciBiZSBkZWNsYXJlZCBhcyB0aGUgY2hpbGQgCisgICAgICAgIG9mIGFub3RoZXIgb2Jq
ZWN0IGR1cmluZyB0aGF0IGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSB0cmVlLWxpa2Ugdmll
dyBvZiB0aGUgCisgICAgICAgIEhlYXAgKGkuZS4gZWFjaCBzY2FubmVkIG5vZGUgb25seSByZXBv
cnRzIGhhdmluZyBhIHNpbmdsZSBwYXJlbnQpLCB3aGVyZSB0aGUgYWN0dWFsIAorICAgICAgICBI
ZWFwIGNhbiBiZSBhbiBhcmJpdHJhcnkgZ3JhcGguCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBs
YWNlcyBPQkpFQ1RfTUFSS19MT0dHSU5HIGFuZCBnaXZlcyB1cyB0aGVzZSBuaWNlIHRvIGhhdmVz
LiBGaXJzdCBpdCBlbmhhbmNlcyAKKyAgICAgICAgb3VyIGxvZ0dDKCkgcnVudGltZSBPcHRpb24g
YnkgY2hhbmdpbmcgaXQgdG8gYmUgYSB0cmktc3RhdGUgdmFsdWUgb2YgTm9uZSwgQmFzaWMsIG9y
IFZlcmJvc2UgCisgICAgICAgIGxvZ2dpbmcgbGV2ZWxzLiBOb25lIG1lYW5zIG5vIGxvZ2dpbmcg
aXMgZG9uZSwgQmFzaWMgaXMgd2hhdCBsb2dHQygpID0gdHJ1ZSB3b3VsZCBoYXZlIGRvbmUgCisg
ICAgICAgIHByaW9yIHRvIHRoaXMgcGF0Y2gsIGFuZCBWZXJib3NlIGxvZ3MgYWxsIG9iamVjdCBy
ZWxhdGlvbnNoaXBzLgorCisgICAgICAgIEpTQ2VsbCBoYXMgbmV3IGR1bXAvZHVtcFRvU3RyZWFt
IG1ldGhvZHMsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgInZpcnR1YWwiIHRvIGFsbG93IAorICAg
ICAgICBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0cmluZyByZXByZXNlbnRh
dGlvbiB0aGF0IHdpbGwgYmUgZHVtcGVkLiBUaGVzZSAKKyAgICAgICAgbWV0aG9kcyBhbGxvdyBK
U0NlbGxzIHRvIGJlIGR1bXBlZCB1c2luZyB0aGUgc3RhbmRhcmQgZGF0YUxvZygpIGNhbGxzIHNp
bWlsYXIgdG8gbXVjaCBvZgorICAgICAgICB0aGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZSBpbiBv
dXIgY29tcGlsZXJzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgR0NMb2dnaW5n
IGNsYXNzIHRoYXQgaGFuZGxlcyBkdW1waW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2Jq
ZWN0cy4KKyAgICAgICAgSXQgZG9lcyB0aGlzIGJ5IHVzaW5nIHRoZSBwcmUtZXhpc3Rpbmcgdmlz
aXRDaGlsZHJlbiB2aXJ0dWFsIG1ldGhvZHMgdG8gb2J0YWluIHRoZSBpbW1lZGlhdGUKKyAgICAg
ICAgY2hpbGRyZW4gb2YgZWFjaCBsaXZlIGNlbGwgYXQgdGhlIGVuZCBvZiBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWVldHMgb3VyIGdvYWwgb2YgYmVpbmcgbmV1
dHJhbCBvbiB0aGUgYmVuY2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9HQ0xvZ2dpbmcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OkxvZ2dpbmdGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6TG9nZ2luZ0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpMb2dnaW5nRnVu
Y3Rvcjo6bG9nKToKKyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldml2ZUNlbGxzKToK
KyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpT
Qzo6R0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgpOgorICAgICAgICAqIGhlYXAvR0NMb2dnaW5n
Lmg6IEFkZGVkLgorICAgICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheS5oOgorICAgICAgICAo
SlNDOjpHQ1NlZ21lbnRlZEFycmF5OjpiZWdpbik6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVk
QXJyYXk6OmVuZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6dmlzaXRDb21waWxlcldvcmtsaXN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0UHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0VGVtcFNvcnRW
ZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRBcmd1bWVudEJ1ZmZlcnMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp2aXNpdEV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0SGFuZGxlU3RhY2sp
OgorICAgICAgICAoSlNDOjpIZWFwOjp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGluZXMp
OgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6
CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaGVhcC9T
bG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkdW1wKToKKyAgICAg
ICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjptYXJr
U3RhY2spOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjppbnRlcm5hbEFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZHVtcFRvU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpkdW1wVG9TdHJlYW0pOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpS
b3BlQnVpbGRlcjo6bGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA0LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSBmb3IgSlNDb250ZXh0
IGNvbnNvbGUgdG8gbG9nIHRvIHN5c3RlbSBjb25zb2xlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsyMTksNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5j
cHAKICAgICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwCisgICAgaGVhcC9HQ0xvZ2dpbmcuY3BwCiAgICAgaGVhcC9HQ1RocmVh
ZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKICAgICBoZWFwL0hhbmRsZVNl
dC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDY2LDYgKzQ2Niw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NM
b2dnaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NUaHJlYWQu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ1RocmVhZFNoYXJlZERh
dGEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxIYW5kbGVTZXQuY3Bw
IiAvPgpAQCAtMTA1MCw2ICsxMDUxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEdDQWN0aXZpdHlDYWxsYmFjay5oIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caGVhcFxHQ0xvZ2dpbmcuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxHQ1NlZ21lbnRlZEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoZWFwXEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEdDQXNzZXJ0aW9ucy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY2ODA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDkgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NMb2dnaW5nLmNwcCI+CisgICAgICA8RmlsdGVyPmhlYXA8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NUaHJlYWQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTcwMCw2ICsxNzAzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXEdDTG9n
Z2luZy5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxHQ1NlZ21lbnRlZEFycmF5LmgiPgogICAg
ICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTc5NSw2ICs3OTUsNyBAQAogCQkyQTgzNjM4OTE4RDdEMEZFMDAwMEVCQ0MgLyog
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5
NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFCQ0RF
NjE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFB
Q0U2M0IxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUQ5NjRBMTg1Njk0MTcw
MDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBS
ZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsKQEAgLTgwMyw2ICs4MDQsNyBAQAogCQky
QUNDRjNERTE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQ0NGM0RD
MTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovOyB9
OwogCQkyQUNDRjNERjE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUND
RjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggKi87
IH07CiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKKwkJMkFERkEyNjMx
OEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dn
aW5nLmNwcCAqLzsgfTsKIAkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlE
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9Owog
CQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5k
eWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtMjI4OCw2ICsy
MjkwLDcgQEAKIAkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg4
MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJs
b2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFBQkNERTYxOEVGMjk0MjAwMDAy
MDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xv
Z2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAw
RUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUg
LyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjI5Niw2ICsyMjk5LDcgQEAKIAkJMkFDQ0YzREMxODVGRTI2QjAwODNFMkFEIC8q
IERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBQ0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9u
UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJyaWVy
RWxpc2lvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBREZB
MjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMx
N0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxp
YnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OwpAQCAtMzYzMiw2ICszNjM2LDggQEAKIAkJCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAw
RUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQkyQTgzNjM4ODE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAorCQkJCTJBQUJDREU2
MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLywKKwkJCQkyQURGQTI2MjE4RUYzNTQw
MDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00OTUyLDYgKzQ5NTgsNyBAQAogCQkJCUExQTAw
OUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTY2Nzgs
NiArNjY4NSw3IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1
bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkFERkEyNjMx
OEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0
NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKworI2luY2x1ZGUgIkNsYXNzSW5mby5o
IgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBjaGFyKiBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcoTGV2ZWwgbGV2
ZWwpCit7CisgICAgc3dpdGNoIChsZXZlbCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0
dXJuICJOb25lIjsKKyAgICBjYXNlIEJhc2ljOgorICAgICAgICByZXR1cm4gIkJhc2ljIjsKKyAg
ICBjYXNlIFZlcmJvc2U6CisgICAgICAgIHJldHVybiAiVmVyYm9zZSI7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2NsYXNz
IExvZ2dpbmdGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBMb2dnaW5nRnVuY3RvcihTbG90VmlzaXRv
ciYgc2xvdFZpc2l0b3IpCisgICAgICAgIDogbV9zbG90VmlzaXRvcihzbG90VmlzaXRvcikKKyAg
ICB7CisgICAgICAgIG1fc2F2ZWRNYXJrU3RhY2sucmVzaXplKG1fc2xvdFZpc2l0b3IubWFya1N0
YWNrKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5maWxsVmVj
dG9yKG1fc2F2ZWRNYXJrU3RhY2spOworICAgIH0KKworICAgIH5Mb2dnaW5nRnVuY3RvcigpCisg
ICAgeworICAgICAgICByZXZpdmVDZWxscygpOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3Io
KShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBtX2xpdmVDZWxscy5hcHBlbmQoY2VsbCk7
CisgICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2xlYXJNYXJrZWQoY2VsbCk7
CisgICAgfQorCisgICAgdm9pZCBsb2coKQorICAgIHsKKyAgICAgICAgbV9zbG90VmlzaXRvci5j
bGVhck1hcmtTdGFjaygpOworICAgICAgICBmb3IgKEpTQ2VsbCogY2VsbCA6IG1fbGl2ZUNlbGxz
KSB7CisgICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT52aXNpdENoaWxkcmVuKGNlbGws
IG1fc2xvdFZpc2l0b3IpOworICAgICAgICAgICAgZGF0YUxvZygiXG4iLCAqY2VsbCwgIjpcbiIs
IG1fc2xvdFZpc2l0b3IpOworICAgICAgICAgICAgZm9yIChjb25zdCBKU0NlbGwqIG5laWdoYm9y
IDogbV9zbG90VmlzaXRvci5tYXJrU3RhY2soKSkKKyAgICAgICAgICAgICAgICBNYXJrZWRCbG9j
azo6YmxvY2tGb3IobmVpZ2hib3IpLT5jbGVhck1hcmtlZChuZWlnaGJvcik7CisgICAgICAgICAg
ICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9z
bG90VmlzaXRvci5yZXNldCgpOworICAgIH0KKworICAgIHZvaWQgcmV2aXZlQ2VsbHMoKQorICAg
IHsKKyAgICAgICAgZm9yIChKU0NlbGwqIGNlbGwgOiBtX2xpdmVDZWxscykKKyAgICAgICAgICAg
IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+c2V0TWFya2VkKGNlbGwpOworCisgICAgICAg
IGZvciAoY29uc3QgSlNDZWxsKiBjZWxsIDogbV9zYXZlZE1hcmtTdGFjaykgeworICAgICAgICAg
ICAgbV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5hcHBlbmQoY2VsbCk7CisgICAgICAgICAgICBj
b25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLT5zZXRSZW1lbWJlcmVkKHRydWUpOworICAgICAgICB9
CisgICAgfQorCisgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CisKKyAgICB2b2lkIHJldHVy
blZhbHVlKCkgeyB9OworCitwcml2YXRlOgorICAgIFZlY3Rvcjxjb25zdCBKU0NlbGwqPiBtX3Nh
dmVkTWFya1N0YWNrOworICAgIFZlY3RvcjxKU0NlbGwqPiBtX2xpdmVDZWxsczsKKyAgICBTbG90
VmlzaXRvciYgbV9zbG90VmlzaXRvcjsKK307CisKK3ZvaWQgR0NMb2dnaW5nOjpkdW1wT2JqZWN0
R3JhcGgoSGVhcCogaGVhcCkKK3sKKyAgICBMb2dnaW5nRnVuY3RvciBsb2dnaW5nRnVuY3Rvciho
ZWFwLT5tX3Nsb3RWaXNpdG9yKTsKKyAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2Nv
cGUoKmhlYXApOworICAgIGhlYXAtPm9iamVjdFNwYWNlKCkuZm9yRWFjaExpdmVDZWxsKGl0ZXJh
dGlvblNjb3BlLCBsb2dnaW5nRnVuY3Rvcik7CisgICAgbG9nZ2luZ0Z1bmN0b3IubG9nKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NMb2dnaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NM
b2dnaW5nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xv
Z2dpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBHQ0xvZ2dpbmdfaAorI2RlZmluZSBHQ0xvZ2dpbmdfaAorCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7CisKK2NsYXNzIEdD
TG9nZ2luZyB7CitwdWJsaWM6CisgICAgZW51bSBMZXZlbCA6IHVpbnQ4X3QgeworICAgICAgICBO
b25lID0gMCwKKyAgICAgICAgQmFzaWMsCisgICAgICAgIFZlcmJvc2UKKyAgICB9OworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGxldmVsQXNTdHJpbmcoTGV2ZWwpOworICAgIHN0YXRpYyB2b2lk
IGR1bXBPYmplY3RHcmFwaChIZWFwKik7Cit9OworCit0eXBlZGVmIEdDTG9nZ2luZzo6TGV2ZWwg
Z2NMb2dMZXZlbDsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHQ0xvZ2dpbmdf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXku
aAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdt
ZW50ZWRBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBHQ1NlZ21lbnRlZEEKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xh
c3MgR0NTZWdtZW50ZWRBcnJheSB7CiAgICAgZnJpZW5kIGNsYXNzIEdDU2VnbWVudGVkQXJyYXlJ
dGVyYXRvcjxUPjsKKyAgICBmcmllbmQgY2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPGNv
bnN0IFQ+OwogcHVibGljOgogICAgIEdDU2VnbWVudGVkQXJyYXkoQmxvY2tBbGxvY2F0b3ImKTsK
ICAgICB+R0NTZWdtZW50ZWRBcnJheSgpOwpAQCAtODEsOCArODIsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhcigpOwogCiAgICAgdHlwZWRlZiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4g
aXRlcmF0b3I7Ci0gICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBHQ1NlZ21lbnRlZEFycmF5
SXRlcmF0b3I8VD4obV9zZWdtZW50cy5oZWFkKCksIG1fdG9wKTsgfQotICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPigpOyB9CisgICAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4obV9z
ZWdtZW50cy5oZWFkKCksIG1fdG9wKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPigpOyB9CiAKIHByb3RlY3RlZDoKICAgICB0
ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBDYXBhY2l0eUZyb21TaXplIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE3ICs0
NzQsMTMgQEAgdm9pZCBIZWFwOjpnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKAogICAgIH0K
IH0KIAotdm9pZCBIZWFwOjptYXJrUm9vdHMoKQordm9pZCBIZWFwOjptYXJrUm9vdHMoZG91Ymxl
IGdjU3RhcnRUaW1lKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJHYXJi
YWdlIENvbGxlY3Rpb246IE1hcmtpbmciKTsKIAogICAgIEdDUEhBU0UoTWFya1Jvb3RzKTsKICAg
ICBBU1NFUlQoaXNWYWxpZFRocmVhZFN0YXRlKG1fdm0pKTsKIAotI2lmIEVOQUJMRShPQkpFQ1Rf
TUFSS19MT0dHSU5HKQotICAgIGRvdWJsZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShHR0MpCiAgICAgVmVjdG9y
PGNvbnN0IEpTQ2VsbCo+IHJlbWVtYmVyZWRTZXQobV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5z
aXplKCkpOwogICAgIG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuZmlsbFZlY3RvcihyZW1lbWJl
cmVkU2V0KTsKQEAgLTUzNSw3ICs1MzEsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAg
ICBjbGVhclJlbWVtYmVyZWRTZXQocmVtZW1iZXJlZFNldCk7CiAgICAgbV9zaGFyZWREYXRhLmRp
ZEZpbmlzaE1hcmtpbmcoKTsKLSAgICB1cGRhdGVPYmplY3RDb3VudHMoKTsKKyAgICB1cGRhdGVP
YmplY3RDb3VudHMoZ2NTdGFydFRpbWUpOwogICAgIHJlc2V0VmlzaXRvcnMoKTsKIH0KIApAQCAt
NTk5LDEzICs1OTUsMjEgQEAgdm9pZCBIZWFwOjp2aXNpdFNtYWxsU3RyaW5ncygpCiB7CiAgICAg
R0NQSEFTRShWaXNpdFNtYWxsU3RyaW5ncyk7CiAgICAgbV92bS0+c21hbGxTdHJpbmdzLnZpc2l0
U3Ryb25nUmVmZXJlbmNlcyhtX3Nsb3RWaXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjpsb2dH
QygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiU21hbGwgc3RyaW5n
czpcbiIsIG1fc2xvdFZpc2l0b3IpOworCisgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFp
bigpOwogfQogCiB2b2lkIEhlYXA6OnZpc2l0Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZl
Um9vdHMmIHJvb3RzKQogewogICAgIEdDUEhBU0UoVmlzaXRDb25zZXJ2YXRpdmVSb290cyk7Ci0g
ICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiQ29uc2VydmF0aXZlIFJvb3RzIik7CiAg
ICAgbV9zbG90VmlzaXRvci5hcHBlbmQocm9vdHMpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dD
KCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJDb25zZXJ2YXRpdmUg
Um9vdHM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5k
RHJhaW4oKTsKIH0KIApAQCAtNjEzLDI5ICs2MTcsMzQgQEAgdm9pZCBIZWFwOjp2aXNpdENvbXBp
bGVyV29ya2xpc3RzKCkKIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBHQ1BIQVNFKFZpc2l0
REZHV29ya2xpc3RzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJERkcgV29y
a2xpc3RzIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gREZHOjpudW1iZXJPZldvcmtsaXN0cygp
OyBpLS07KSB7CiAgICAgICAgIGlmIChERkc6OldvcmtsaXN0KiB3b3JrbGlzdCA9IERGRzo6d29y
a2xpc3RGb3JJbmRleE9yTnVsbChpKSkKICAgICAgICAgICAgIHdvcmtsaXN0LT52aXNpdENoaWxk
cmVuKG1fc2xvdFZpc2l0b3IsIG1fY29kZUJsb2Nrcyk7CiAgICAgfQorCisgICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJERkcg
V29ya2xpc3RzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKKyAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0
ZUFuZERyYWluKCk7CiAjZW5kaWYKIH0KIAogdm9pZCBIZWFwOjp2aXNpdFByb3RlY3RlZE9iamVj
dHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNp
dFByb3RlY3RlZE9iamVjdHMpOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIlBy
b3RlY3RlZCBPYmplY3RzIik7CiAKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb3RlY3RlZFZh
bHVlcykKICAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0KCZwYWlyLmtleSk7CisKKyAgICBp
ZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIlByb3RlY3RlZCBPYmplY3RzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Nsb3RW
aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRUZW1wU29ydFZl
Y3RvcnMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShW
aXNpdFRlbXBTb3J0VmVjdG9ycyk7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAi
VGVtcCBTb3J0IFZlY3RvcnMiKTsKLQogICAgIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0
cmluZ1BhaXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93Pio+IFZlY3Rvck9mVmFsdWVTdHJpbmdW
ZWN0b3JzOwogCiAgICAgZm9yIChhdXRvKiB2ZWN0b3IgOiBtX3RlbXBTb3J0aW5nVmVjdG9ycykg
ewpAQCAtNjQ0LDUzICs2NTMsNzIgQEAgdm9pZCBIZWFwOjp2aXNpdFRlbXBTb3J0VmVjdG9ycyhI
ZWFwUm9vdAogICAgICAgICAgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdCgmdmFsdWVTdHJp
bmdQYWlyLmZpcnN0KTsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChPcHRpb25zOjpsb2dH
QygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiVGVtcCBTb3J0IFZl
Y3RvcnM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5k
RHJhaW4oKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEFyZ3VtZW50QnVmZmVycyhIZWFwUm9vdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShNYXJraW5nQXJndW1lbnRCdWZmZXJzKTsK
LSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJBcmd1bWVudCBCdWZmZXJzIik7CiAg
ICAgaWYgKCFtX21hcmtMaXN0U2V0IHx8ICFtX21hcmtMaXN0U2V0LT5zaXplKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHModmlzaXRvciwg
Km1fbWFya0xpc3RTZXQpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5n
OjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJBcmd1bWVudCBCdWZmZXJzOlxuIiwgbV9zbG90
VmlzaXRvcik7CisKICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZv
aWQgSGVhcDo6dmlzaXRFeGNlcHRpb24oSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAg
IEdDUEhBU0UoTWFya2luZ0V4Y2VwdGlvbik7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNp
dG9yLCAiRXhjZXB0aW9ucyIpOwogICAgIGlmICghbV92bS0+ZXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHZpc2l0b3IudmlzaXQobV92bS0+YWRkcmVzc09mRXhjZXB0aW9uKCkp
OworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJFeGNlcHRpb25zOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Ns
b3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRTdHJvbmdI
YW5kbGVzKEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKFZpc2l0U3Ry
b25nSGFuZGxlcyk7Ci0gICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiU3Ryb25nIEhh
bmRsZXMiKTsKICAgICBtX2hhbmRsZVNldC52aXNpdFN0cm9uZ0hhbmRsZXModmlzaXRvcik7CisK
KyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAg
IGRhdGFMb2coIlN0cm9uZyBIYW5kbGVzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Ns
b3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRIYW5kbGVT
dGFjayhIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShWaXNpdEhhbmRs
ZVN0YWNrKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJIYW5kbGUgU3RhY2si
KTsKICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KHZpc2l0b3IpOworCisgICAgaWYgKE9wdGlvbnM6
OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJIYW5kbGUg
U3RhY2s6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5k
RHJhaW4oKTsKIH0KIAogdm9pZCBIZWFwOjp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGlu
ZXMoKQogewogICAgIEdDUEhBU0UoVHJhY2VDb2RlQmxvY2tzQW5kSklUU3R1YlJvdXRpbmVzKTsK
LSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJUcmFjZSBDb2RlIEJsb2NrcyBhbmQg
SklUIFN0dWIgUm91dGluZXMiKTsKICAgICBtX2NvZGVCbG9ja3MudHJhY2VNYXJrZWQobV9zbG90
VmlzaXRvcik7CiAgICAgbV9qaXRTdHViUm91dGluZXMudHJhY2VNYXJrZWRTdHViUm91dGluZXMo
bV9zbG90VmlzaXRvcik7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6
OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkNvZGUgQmxvY2tzIGFuZCBKSVQgU3R1YiBSb3V0
aW5lczpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmRE
cmFpbigpOwogfQogCkBAIC03MDUsMTIgKzczMywxNSBAQCB2b2lkIEhlYXA6OmNvbnZlcmdlKCkK
IHZvaWQgSGVhcDo6dmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CiAgICAgR0NQSEFTRShWaXNpdGluZ0xpdmVXZWFrSGFuZGxlcyk7Ci0gICAgTUFSS19MT0dfUk9P
VChtX3Nsb3RWaXNpdG9yLCAiTGl2ZSBXZWFrIEhhbmRsZXMiKTsKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHModmlzaXRvcik7CiAgICAgICAg
IGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwogICAgICAgICBpZiAobV9zbG90VmlzaXRvci5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0Mo
KSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJMaXZlIFdlYWsg
SGFuZGxlczpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgICAgIHsKICAgICAgICAgICAgIFBh
cmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9yKTsKICAgICAgICAgICAgIG1f
c2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKQEAgLTczNCwxNyArNzY1LDE3IEBAIHZvaWQg
SGVhcDo6Y2xlYXJSZW1lbWJlcmVkU2V0KFZlY3Rvcjxjb24KICNlbmRpZgogfQogCi12b2lkIEhl
YXA6OnVwZGF0ZU9iamVjdENvdW50cygpCit2b2lkIEhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyhk
b3VibGUgZ2NTdGFydFRpbWUpCiB7CiAgICAgR0NDT1VOVEVSKFZpc2l0ZWRWYWx1ZUNvdW50LCBt
X3Nsb3RWaXNpdG9yLnZpc2l0Q291bnQoKSk7CiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9H
R0lORykKLSAgICBzaXplX3QgdmlzaXRDb3VudCA9IG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgp
OworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkgeworICAg
ICAgICBzaXplX3QgdmlzaXRDb3VudCA9IG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgpOwogI2lm
IEVOQUJMRShQQVJBTExFTF9HQykKLSAgICB2aXNpdENvdW50ICs9IG1fc2hhcmVkRGF0YS5jaGls
ZFZpc2l0Q291bnQoKTsKLSNlbmRpZgotICAgIE1BUktfTE9HX01FU1NBR0UyKCJcbk51bWJlciBv
ZiBsaXZlIE9iamVjdHMgYWZ0ZXIgZnVsbCBHQyAlbHUsIHRvb2sgJS42ZiBzZWNzXG4iLCB2aXNp
dENvdW50LCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUp
OworICAgICAgICB2aXNpdENvdW50ICs9IG1fc2hhcmVkRGF0YS5jaGlsZFZpc2l0Q291bnQoKTsK
ICNlbmRpZgorICAgICAgICBkYXRhTG9nRigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVy
IEdDICVsdSwgdG9vayAlLjZmIHNlY3NcbiIsIHZpc2l0Q291bnQsIFdURjo6bW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgLSBnY1N0YXJ0VGltZSk7CisgICAgfQogCiAgICAgaWYgKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgewogICAgICAgICBtX3RvdGFsQnl0
ZXNWaXNpdGVkICs9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNpdGVkKCk7CkBAIC05NTEsNyArOTgy
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogICAgIHN0b3BB
bGxvY2F0aW9uKCk7CiAgICAgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKIAotICAgIG1hcmtS
b290cygpOworICAgIG1hcmtSb290cyhnY1N0YXJ0VGltZSk7CiAKICAgICBKQVZBU0NSSVBUQ09S
RV9HQ19NQVJLRUQoKTsKIApAQCAtMTE3OCw2ICsxMjA5LDkgQEAgdm9pZCBIZWFwOjpkaWRGaW5p
c2hDb2xsZWN0aW9uKGRvdWJsZSBnYwogCiAgICAgaWYgKE9wdGlvbnM6OnNob3dPYmplY3RTdGF0
aXN0aWNzKCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyh0
aGlzKTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkK
KyAgICAgICAgR0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgodGhpcyk7CiB9CiAKIHZvaWQgSGVh
cDo6cmVzdW1lQ29tcGlsZXJUaHJlYWRzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIERlZmVyR0NGb3JBV2hpbGU7CiAgICAgZnJpZW5kIGNsYXNzIERlbGF5ZWRSZWxlYXNl
U2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsKKyAgICBmcmll
bmQgY2xhc3MgR0NMb2dnaW5nOwogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJp
ZW5kIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC0yNjEsNyArMjYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoV3Jp
dGVCYXJyaWVyQnVmZmVyKCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGlvbigpOwogCi0gICAgdm9p
ZCBtYXJrUm9vdHMoKTsKKyAgICB2b2lkIG1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUpOwog
ICAgIHZvaWQgZ2F0aGVyU3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIHZvaWQqKiBkdW1t
eSk7CiAgICAgdm9pZCBnYXRoZXJKU1N0YWNrUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAg
ICB2b2lkIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOwpAQCAt
Mjc5LDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb252ZXJnZSgpOwogICAgIHZvaWQg
dmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIGNsZWFyUmVtZW1i
ZXJlZFNldChWZWN0b3I8Y29uc3QgSlNDZWxsKj4mKTsKLSAgICB2b2lkIHVwZGF0ZU9iamVjdENv
dW50cygpOworICAgIHZvaWQgdXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1N0YXJ0VGltZSk7
CiAgICAgdm9pZCByZXNldFZpc2l0b3JzKCk7CiAKICAgICB2b2lkIHJlYXBXZWFrSGFuZGxlcygp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDE2
NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwzMCArMjYsNiBAQAogI2lmbmRlZiBNYXJrU3RhY2tfaAogI2RlZmluZSBN
YXJrU3RhY2tfaAogCi0jaWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xPR0dJTkcpCi0jZGVmaW5lIE1B
UktfTE9HX01FU1NBR0UwKG1lc3NhZ2UpIGRhdGFMb2dGKG1lc3NhZ2UpCi0jZGVmaW5lIE1BUktf
TE9HX01FU1NBR0UxKG1lc3NhZ2UsIGFyZzEpIGRhdGFMb2dGKG1lc3NhZ2UsIGFyZzEpCi0jZGVm
aW5lIE1BUktfTE9HX01FU1NBR0UyKG1lc3NhZ2UsIGFyZzEsIGFyZzIpIGRhdGFMb2dGKG1lc3Nh
Z2UsIGFyZzEsIGFyZzIpCi0jZGVmaW5lIE1BUktfTE9HX1JPT1QodmlzaXRvciwgcm9vdE5hbWUp
IFwKLSAgICBkYXRhTG9nRigiXG4lczogIiwgcm9vdE5hbWUpOyBcCi0gICAgKHZpc2l0b3IpLnJl
c2V0Q2hpbGRDb3VudCgpCi0jZGVmaW5lIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBwYXJlbnQp
IFwKLSAgICBkYXRhTG9nRigiXG4lcCAoJXMpOiAiLCBwYXJlbnQsIHBhcmVudC0+Y2xhc3NOYW1l
KCkgPyBwYXJlbnQtPmNsYXNzTmFtZSgpIDogInVua25vd24iKTsgXAotICAgICh2aXNpdG9yKS5y
ZXNldENoaWxkQ291bnQoKQotI2RlZmluZSBNQVJLX0xPR19DSElMRCh2aXNpdG9yLCBjaGlsZCkg
XAotICAgIGlmICgodmlzaXRvcikuY2hpbGRDb3VudCgpKSBcCi0gICAgZGF0YUxvZ0ZTdHJpbmco
IiwgIik7IFwKLSAgICBkYXRhTG9nRigiJXAiLCBjaGlsZCk7IFwKLSAgICAodmlzaXRvcikuaW5j
cmVtZW50Q2hpbGRDb3VudCgpCi0jZWxzZQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdFMChtZXNz
YWdlKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdFMShtZXNz
YWdlLCBhcmcxKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJLX0xPR19NRVNTQUdF
MihtZXNzYWdlLCBhcmcxLCBhcmcyKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmluZSBNQVJL
X0xPR19ST09UKHZpc2l0b3IsIHJvb3ROYW1lKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2RlZmlu
ZSBNQVJLX0xPR19QQVJFTlQodmlzaXRvciwgcGFyZW50KSBkbyB7IH0gd2hpbGUgKGZhbHNlKQot
I2RlZmluZSBNQVJLX0xPR19DSElMRCh2aXNpdG9yLCBjaGlsZCkgZG8geyB9IHdoaWxlIChmYWxz
ZSkKLSNlbmRpZgotCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw0ICszNzMsMTAgQEAgdm9pZCBT
bG90VmlzaXRvcjo6dmFsaWRhdGUoSlNDZWxsKikKIH0KICNlbmRpZgogCit2b2lkIFNsb3RWaXNp
dG9yOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEpTQ2VsbCog
Y2VsbCA6IG1hcmtTdGFjaygpKQorICAgICAgICBkYXRhTG9nKCpjZWxsLCAiXG4iKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgog
ICAgIH5TbG90VmlzaXRvcigpOwogCiAgICAgTWFya1N0YWNrQXJyYXkmIG1hcmtTdGFjaygpIHsg
cmV0dXJuIG1fc3RhY2s7IH0KKyAgICBjb25zdCBNYXJrU3RhY2tBcnJheSYgbWFya1N0YWNrKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFjazsgfQogCiAgICAgVk0mIHZtKCk7CiAgICAgY29uc3QgVk0m
IHZtKCkgY29uc3Q7CkBAIC0xMDksMTEgKzExMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyKFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIqKTsKICAgICB2b2lk
IGFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoVW5jb25kaXRpb25hbEZpbmFsaXplciopOwogCi0j
aWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xPR0dJTkcpCiAgICAgaW5saW5lIHZvaWQgcmVzZXRDaGls
ZENvdW50KCkgeyBtX2xvZ0NoaWxkQ291bnQgPSAwOyB9CiAgICAgaW5saW5lIHVuc2lnbmVkIGNo
aWxkQ291bnQoKSB7IHJldHVybiBtX2xvZ0NoaWxkQ291bnQ7IH0KICAgICBpbmxpbmUgdm9pZCBp
bmNyZW1lbnRDaGlsZENvdW50KCkgeyBtX2xvZ0NoaWxkQ291bnQrKzsgfQotI2VuZGlmCisKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgUGFyYWxsZWxNb2RlRW5hYmxlcjsKQEAgLTE0OCw5ICsxNDksNyBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmdJbXBsKiwgSlNWYWx1ZT4gVW5pcXVlU3RyaW5nTWFw
OwogICAgIFVuaXF1ZVN0cmluZ01hcCBtX3VuaXF1ZVN0cmluZ3M7CiAKLSNpZiBFTkFCTEUoT0JK
RUNUX01BUktfTE9HR0lORykKICAgICB1bnNpZ25lZCBtX2xvZ0NoaWxkQ291bnQ7Ci0jZW5kaWYK
IAogcHVibGljOgogI2lmICFBU1NFUlRfRElTQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNjY4MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDggKzExNiw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRv
cjo6aW50ZXJuYWwKICAgICBjZWxsLT5zZXRNYXJrZWQoKTsKICAgICBtX2J5dGVzVmlzaXRlZCAr
PSBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNlbGxTaXplKCk7CiAgICAgICAgIAotICAg
IE1BUktfTE9HX0NISUxEKCp0aGlzLCBjZWxsKTsKLQogICAgIHVuY29uZGl0aW9uYWxseUFwcGVu
ZChjZWxsKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw5IEBAIHN0cnVjdCBNZXRo
b2RUYWJsZSB7CiAgICAgCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
KCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBHZXRUeXBlZEFy
cmF5SW1wbCBnZXRUeXBlZEFycmF5SW1wbDsKKworICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0
cmVhbUZ1bmN0aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOworICAgIER1bXBU
b1N0cmVhbUZ1bmN0aW9uUHRyIGR1bXBUb1N0cmVhbTsKIH07CiAKICNkZWZpbmUgQ1JFQVRFX01F
TUJFUl9DSEVDS0VSKG1lbWJlcikgXApAQCAtMTM4LDcgKzE0MSw4IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6OnNs
b3dEb3duQW5kV2FzdGVNZW1vcnksIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6Z2V0VHlwZWRBcnJh
eUltcGwgXAorICAgICAgICAmQ2xhc3NOYW1lOjpnZXRUeXBlZEFycmF5SW1wbCwgXAorICAgICAg
ICAmQ2xhc3NOYW1lOjpkdW1wVG9TdHJlYW0gXAogICAgIH0sIFwKICAgICBDbGFzc05hbWU6OlR5
cGVkQXJyYXlTdG9yYWdlVHlwZQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDE2IEBAIHZvaWQg
SlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwo
KTsKIH0KIAordm9pZCBKU0NlbGw6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBtZXRob2RUYWJsZSgpLT5kdW1wVG9TdHJlYW0odGhpcywgb3V0KTsKK30KKwordm9pZCBKU0Nl
bGw6OmR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqIGNlbGwsIFByaW50U3RyZWFtJiBvdXQpCit7
CisgICAgb3V0LnByaW50ZigiPCVwLCAlcz4iLCBjZWxsLCBjZWxsLT5jbGFzc05hbWUoKSk7Cit9
CisKIHZvaWQgSlNDZWxsOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwg
Q29weVRva2VuKQogewogfQpAQCAtMTkyLDcgKzIwMiw3IEBAIFN0cmluZyBKU0NlbGw6OmNsYXNz
TmFtZShjb25zdCBKU09iamVjdCoKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWNvbnN0IGNo
YXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKCkKK2NvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xhc3NOYW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY2xhc3NJbmZvKCktPmNsYXNzTmFtZTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3Mg
aW5saW5lVHlwZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogCi0gICAgY29uc3Qg
Y2hhciogY2xhc3NOYW1lKCk7CisgICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCkgY29uc3Q7CiAK
ICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGdldFN0cmluZyhFeGVjU3RhdGUqLCBTdHJpbmcmKSBjb25zdDsKQEAgLTEyMyw2ICsxMjMsOCBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0
ZSopIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdChFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcFRvU3Ry
ZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9r
ZW4pOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsxMDYsNiBAQCBpbmxp
bmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZShWTSYgCiAKIGlubGluZSB2b2lkIEpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxsKTsKLQogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZpc2l0b3Iudm0oKSk7CiAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZFBvaW50ZXIoJnN0cnVjdHVyZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDI0ICs0OSwyNyBAQCB2b2lkIEpTU3RyaW5nOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAg
ICB0aGlzT2JqZWN0LT5KU1N0cmluZzo6fkpTU3RyaW5nKCk7CiB9CiAKLXZvaWQgSlNTdHJpbmc6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQg
SlNTdHJpbmc6OmR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqIGNlbGwsIFByaW50U3RyZWFtJiBv
dXQpCiB7Ci0gICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxs
KTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIAot
ICAgIE1BUktfTE9HX01FU1NBR0UxKCJbJXVdOiAiLCB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7Ci0K
LSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlz
Um9wZSgpKSB7CisgICAgY29uc3QgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPihjZWxsKTsKKyAgICBvdXQucHJpbnRmKCI8JXAsICVzLCBbJXVdLCAiLCB0aGlz
T2JqZWN0LCB0aGlzT2JqZWN0LT5jbGFzc05hbWUoKSwgdGhpc09iamVjdC0+bGVuZ3RoKCkpOyAK
KyAgICBpZiAodGhpc09iamVjdC0+aXNSb3BlKCkpCisgICAgICAgIG91dC5wcmludGYoIltyb3Bl
XSIpOworICAgIGVsc2UgewogICAgICAgICBXVEY6OlN0cmluZ0ltcGwqIG91ckltcGwgPSB0aGlz
T2JqZWN0LT5tX3ZhbHVlLmltcGwoKTsKICAgICAgICAgaWYgKG91ckltcGwtPmlzOEJpdCgpKQot
ICAgICAgICAgICAgTUFSS19MT0dfTUVTU0FHRTEoIls4ICVwXSIsIG91ckltcGwtPmNoYXJhY3Rl
cnM4KCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiWzggJXBdIiwgb3VySW1wbC0+Y2hhcmFj
dGVyczgoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIE1BUktfTE9HX01FU1NBR0UxKCJb
MTYgJXBdIiwgb3VySW1wbC0+Y2hhcmFjdGVyczE2KCkpOwotICAgIH0gZWxzZQotICAgICAgICBN
QVJLX0xPR19NRVNTQUdFMCgiW3JvcGVdOiAiKTsKLSNlbmRpZgorICAgICAgICAgICAgb3V0LnBy
aW50ZigiWzE2ICVwXSIsIG91ckltcGwtPmNoYXJhY3RlcnMxNigpKTsKKyAgICB9CisgICAgb3V0
LnByaW50ZigiPiIpOworfQogCit2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTdHJpbmcqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOworICAgIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKICAg
ICAgICAgc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nKj4odGhpc09iamVjdCktPnZpc2l0RmliZXJz
KHZpc2l0b3IpOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKikgY29u
c3Q7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdHJ5R2V0VmFsdWUoKSBjb25zdDsKICAgICAgICAg
Y29uc3QgU3RyaW5nSW1wbCogdHJ5R2V0VmFsdWVJbXBsKCkgY29uc3Q7Ci0gICAgICAgIHVuc2ln
bmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1ByaW1p
dGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB0b0Jvb2xlYW4oKSBjb25zdDsKQEAgLTE2Nyw2ICsxNjcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCisg
ICAgICAgIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVh
bSYpOwogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICAgICAgZW51bSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRtcDsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9qc1N0cmluZy0+bV9sZW5ndGg7IH0K
KyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fanNTdHJpbmct
Pm1fbGVuZ3RoOyB9CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIHZvaWQgZXhwYW5k
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2
aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDI2IEBAIHN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgT3AKICAgICByZXR1cm4gdmFsdWUuaW5pdChzdHJpbmcpOwogfQog
CitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIEdDTG9nZ2luZzo6TGV2ZWwm
IHZhbHVlKQoreworICAgIGlmICghc3RyY2FzZWNtcChzdHJpbmcsICJub25lIikgfHwgIXN0cmNh
c2VjbXAoc3RyaW5nLCAibm8iKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJmYWxzZSIpIHx8ICFz
dHJjbXAoc3RyaW5nLCAiMCIpKSB7CisgICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpOb25lOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNhc2VjbXAoc3RyaW5n
LCAiYmFzaWMiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY2FzZWNtcChz
dHJpbmcsICJ0cnVlIikgfHwgIXN0cmNtcChzdHJpbmcsICIxIikpIHsKKyAgICAgICAgdmFsdWUg
PSBHQ0xvZ2dpbmc6OkJhc2ljOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBp
ZiAoIXN0cmNhc2VjbXAoc3RyaW5nLCAidmVyYm9zZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMiIp
KSB7CisgICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpWZXJib3NlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgY29uc3Qg
Y2hhciogbmFtZSkKIHsKQEAgLTI4NCw3ICszMDQsNyBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlv
bihjb25zdCBjaGFyKiBhcmcpCiAjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8s
IGRlZmF1bHRWYWx1ZV8pICAgIFwKICAgICBpZiAoIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFs
U3RyIC0gYXJnKSkgeyAgICAgICAgXAogICAgICAgICB0eXBlXyB2YWx1ZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZhbHVlID0gMDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVl
Xyk7ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJz
ZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAgICAgICBcCiAgICAgICAgIGlmIChzdWNjZXNzKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIG5hbWVfKCkgPSB2
YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzMwLDYgKzM1MCw5IEBAIHZv
aWQgT3B0aW9uczo6ZHVtcE9wdGlvbihPcHRpb25JRCBpZCwgRkkKICAgICBjYXNlIG9wdGlvblJh
bmdlVHlwZToKICAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIHNfb3B0aW9uc1tpZF0udS5v
cHRpb25SYW5nZVZhbC5yYW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBn
Y0xvZ0xldmVsVHlwZToKKyAgICAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIEdDTG9nZ2luZzo6
bGV2ZWxBc1N0cmluZyhzX29wdGlvbnNbaWRdLnUuZ2NMb2dMZXZlbFZhbCkpOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGZvb3Rlcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjY4MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgT3B0aW9uc19oCiAjZGVmaW5lIE9wdGlvbnNf
aAogCisjaW5jbHVkZSAiR0NMb2dnaW5nLmgiCiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjU4LDcgKzI1OSw3
IEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihib29sLCBvYmplY3Rz
QXJlSW1tb3J0YWwsIGZhbHNlKSBcCiAgICAgdihib29sLCBzaG93T2JqZWN0U3RhdGlzdGljcywg
ZmFsc2UpIFwKICAgICBcCi0gICAgdihib29sLCBsb2dHQywgZmFsc2UpIFwKKyAgICB2KGdjTG9n
TGV2ZWwsIGxvZ0dDLCBHQ0xvZ2dpbmc6Ok5vbmUpIFwKICAgICB2KGJvb2wsIGRpc2FibGVHQywg
ZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBTaXplLCAwKSBcCiAgICAgdihib29s
LCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCkBAIC0zMDMsNiArMzA0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgZG91YmxlVHlwZSwKICAgICAgICAgaW50MzJUeXBlLAogICAgICAgICBvcHRp
b25SYW5nZVR5cGUsCisgICAgICAgIGdjTG9nTGV2ZWxUeXBlLAogICAgIH07CiAKICAgICAvLyBG
b3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVlOgpAQCAtMzEzLDYgKzMxNSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBkb3VibGUgZG91YmxlVmFsOwogICAgICAgICAgICAgaW50MzIgaW50
MzJWYWw7CiAgICAgICAgICAgICBPcHRpb25SYW5nZSBvcHRpb25SYW5nZVZhbDsKKyAgICAgICAg
ICAgIEdDTG9nZ2luZzo6TGV2ZWwgZ2NMb2dMZXZlbFZhbDsKICAgICAgICAgfSB1OwogICAgICAg
ICBib29sIGRpZE92ZXJyaWRlOwogICAgIH07CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
NC0wNC0wNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEVuaGFuY2VkIEdDIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMTI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBPQkpFQ1RfTUFSS19MT0dHSU5HCisKKyAgICAgICAgKiB3
dGYvRmVhdHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNC0w
NC0wMyAgWnNvbHQgQm9yYmVseSAgPHpzYm9yYmVseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBDU1MgSklUIGFnYWluLCBpdCB3b3JrcyBmaW5l
IGFmdGVyIHIxNjY2NjYuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE2
NjgwNykKKysrIFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyMiwxMCArNjIyLDYgQEAKICNkZWZpbmUgRU5BQkxFX05PVElGSUNBVElPTlMgMAogI2Vu
ZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfT0JKRUNUX01BUktfTE9HR0lORykKLSNkZWZpbmUg
RU5BQkxFX09CSkVDVF9NQVJLX0xPR0dJTkcgMAotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFC
TEVfT1BFTkNMKQogI2RlZmluZSBFTkFCTEVfT1BFTkNMIDAKICNlbmRpZgpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NDAsNyArOTQwLDcgQEAKICNkZWZpbmUgRU5BQkxFX0NPTVBBUkVfQU5E
X1NXQVAgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfUEFSQUxMRUxfR0MpICYmICFF
TkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykgJiYgKE9TKERBUldJTikgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShHVEspKSAmJiBFTkFCTEUoQ09NUEFSRV9BTkRfU1dBUCkKKyNpZiAhZGVm
aW5lZChFTkFCTEVfUEFSQUxMRUxfR0MpICYmIChPUyhEQVJXSU4pIHx8IFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oR1RLKSkgJiYgRU5BQkxFKENPTVBBUkVfQU5EX1NXQVApCiAjZGVmaW5lIEVO
QUJMRV9QQVJBTExFTF9HQyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228637</attachid>
            <date>2014-04-04 17:38:40 -0700</date>
            <delta_ts>2014-04-05 13:08:08 -0700</delta_ts>
            <desc>fix ports</desc>
            <filename>bug-131246-20140404173607.patch</filename>
            <type>text/plain</type>
            <size>43654</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0dGluZyBkYXRhIG9uIHRoZSBzdGF0ZSBvZiB0aGUgSlND
IEhlYXAgYXQgcnVudGltZSBpcyBjdXJyZW50bHkgaW4gYSBzYWQgc3RhdGUuIAorICAgICAgICBU
aGUgT0JKRUNUX01BUktfTE9HR0lORyBtYWNybyBlbmFibGVzIHNvbWUgYmFzaWMgR0MgbG9nZ2lu
ZywgYnV0IGl0IHJlcXVpcmVzIGEgZnVsbCAKKyAgICAgICAgcmVjb21waWxlIHRvIHR1cm4gaXQg
b24uIEl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgcnVudGltZSBlbmFibGUgb3VyIEdDIGxv
Z2dpbmcgCisgICAgICAgIGluZnJhc3RydWN0dXJlIHdoaWxlIGluY3VycmluZyBtaW5pbWFsIGNv
c3Qgd2hlbiBpdCBpcyBkaXNhYmxlZC4gCisKKyAgICAgICAgSXQgd291bGQgYWxzbyBiZSBuaWNl
IHRvIGdldCBhIGNvbXBsZXRlIHZpZXcgb2YgdGhlIEhlYXAuIEN1cnJlbnRseSBPQkpFQ1RfTUFS
S19MT0dHSU5HIAorICAgICAgICBwcm92aWRlcyB1cyB3aXRoIHRoZSBkaXNjb3ZlcmVkIHJvb3Rz
IGFsb25nIHdpdGggcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMgYXMgb2JqZWN0cyAKKyAgICAg
ICAgYXJlIHNjYW5uZWQuIEhvd2V2ZXIsIG9uY2UgYW4gb2JqZWN0IGlzIHNjYW5uZWQgaXQgd2ls
bCBuZXZlciBiZSBkZWNsYXJlZCBhcyB0aGUgY2hpbGQgCisgICAgICAgIG9mIGFub3RoZXIgb2Jq
ZWN0IGR1cmluZyB0aGF0IGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSB0cmVlLWxpa2Ugdmll
dyBvZiB0aGUgCisgICAgICAgIEhlYXAgKGkuZS4gZWFjaCBzY2FubmVkIG5vZGUgb25seSByZXBv
cnRzIGhhdmluZyBhIHNpbmdsZSBwYXJlbnQpLCB3aGVyZSB0aGUgYWN0dWFsIAorICAgICAgICBI
ZWFwIGNhbiBiZSBhbiBhcmJpdHJhcnkgZ3JhcGguCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXBs
YWNlcyBPQkpFQ1RfTUFSS19MT0dHSU5HIGFuZCBnaXZlcyB1cyB0aGVzZSBuaWNlIHRvIGhhdmVz
LiBGaXJzdCBpdCBlbmhhbmNlcyAKKyAgICAgICAgb3VyIGxvZ0dDKCkgcnVudGltZSBPcHRpb24g
YnkgY2hhbmdpbmcgaXQgdG8gYmUgYSB0cmktc3RhdGUgdmFsdWUgb2YgTm9uZSwgQmFzaWMsIG9y
IFZlcmJvc2UgCisgICAgICAgIGxvZ2dpbmcgbGV2ZWxzLiBOb25lIG1lYW5zIG5vIGxvZ2dpbmcg
aXMgZG9uZSwgQmFzaWMgaXMgd2hhdCBsb2dHQygpID0gdHJ1ZSB3b3VsZCBoYXZlIGRvbmUgCisg
ICAgICAgIHByaW9yIHRvIHRoaXMgcGF0Y2gsIGFuZCBWZXJib3NlIGxvZ3MgYWxsIG9iamVjdCBy
ZWxhdGlvbnNoaXBzLgorCisgICAgICAgIEpTQ2VsbCBoYXMgbmV3IGR1bXAvZHVtcFRvU3RyZWFt
IG1ldGhvZHMsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgInZpcnR1YWwiIHRvIGFsbG93IAorICAg
ICAgICBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0cmluZyByZXByZXNlbnRh
dGlvbiB0aGF0IHdpbGwgYmUgZHVtcGVkLiBUaGVzZSAKKyAgICAgICAgbWV0aG9kcyBhbGxvdyBK
U0NlbGxzIHRvIGJlIGR1bXBlZCB1c2luZyB0aGUgc3RhbmRhcmQgZGF0YUxvZygpIGNhbGxzIHNp
bWlsYXIgdG8gbXVjaCBvZgorICAgICAgICB0aGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZSBpbiBv
dXIgY29tcGlsZXJzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgR0NMb2dnaW5n
IGNsYXNzIHRoYXQgaGFuZGxlcyBkdW1waW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2Jq
ZWN0cy4KKyAgICAgICAgSXQgZG9lcyB0aGlzIGJ5IHVzaW5nIHRoZSBwcmUtZXhpc3Rpbmcgdmlz
aXRDaGlsZHJlbiB2aXJ0dWFsIG1ldGhvZHMgdG8gb2J0YWluIHRoZSBpbW1lZGlhdGUKKyAgICAg
ICAgY2hpbGRyZW4gb2YgZWFjaCBsaXZlIGNlbGwgYXQgdGhlIGVuZCBvZiBnYXJiYWdlIGNvbGxl
Y3Rpb24uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWVldHMgb3VyIGdvYWwgb2YgYmVpbmcgbmV1
dHJhbCBvbiB0aGUgYmVuY2htYXJrcyB3ZSB0cmFjay4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9HQ0xvZ2dpbmcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OkxvZ2dpbmdGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6TG9nZ2luZ0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpMb2dnaW5nRnVu
Y3Rvcjo6bG9nKToKKyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldml2ZUNlbGxzKToK
KyAgICAgICAgKEpTQzo6TG9nZ2luZ0Z1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpT
Qzo6R0NMb2dnaW5nOjpkdW1wT2JqZWN0R3JhcGgpOgorICAgICAgICAqIGhlYXAvR0NMb2dnaW5n
Lmg6IEFkZGVkLgorICAgICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheS5oOgorICAgICAgICAo
SlNDOjpHQ1NlZ21lbnRlZEFycmF5OjpiZWdpbik6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVk
QXJyYXk6OmVuZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6dmlzaXRDb21waWxlcldvcmtsaXN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0UHJvdGVjdGVkT2JqZWN0cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0VGVtcFNvcnRW
ZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRBcmd1bWVudEJ1ZmZlcnMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp2aXNpdEV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnZp
c2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0SGFuZGxlU3RhY2sp
OgorICAgICAgICAoSlNDOjpIZWFwOjp0cmFjZUNvZGVCbG9ja3NBbmRKSVRTdHViUm91dGluZXMp
OgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6
CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgICogaGVhcC9T
bG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkdW1wKToKKyAgICAg
ICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjptYXJr
U3RhY2spOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjppbnRlcm5hbEFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9DbGFz
c0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZHVtcFRvU3RyZWFtKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGFzc05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpkdW1wVG9TdHJlYW0pOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpS
b3BlQnVpbGRlcjo6bGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorCiAyMDE0LTA0LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSBmb3IgSlNDb250ZXh0
IGNvbnNvbGUgdG8gbG9nIHRvIHN5c3RlbSBjb25zb2xlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsyMTksNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5j
cHAKICAgICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwCisgICAgaGVhcC9HQ0xvZ2dpbmcuY3BwCiAgICAgaGVhcC9HQ1RocmVh
ZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKICAgICBoZWFwL0hhbmRsZVNl
dC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDY2LDYgKzQ2Niw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NM
b2dnaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NUaHJlYWQu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ1RocmVhZFNoYXJlZERh
dGEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxIYW5kbGVTZXQuY3Bw
IiAvPgpAQCAtMTA1MCw2ICsxMDUxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEdDQWN0aXZpdHlDYWxsYmFjay5oIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caGVhcFxHQ0xvZ2dpbmcuY3BwIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxHQ1NlZ21lbnRlZEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoZWFwXEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEdDQXNzZXJ0aW9ucy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY2ODA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDkgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NMb2dnaW5nLmNwcCI+CisgICAgICA8RmlsdGVyPmhlYXA8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NUaHJlYWQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTcwMCw2ICsxNzAzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXEdDTG9n
Z2luZy5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxHQ1NlZ21lbnRlZEFycmF5LmgiPgogICAg
ICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTc5NSw2ICs3OTUsNyBAQAogCQkyQTgzNjM4OTE4RDdEMEZFMDAwMEVCQ0MgLyog
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5
NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFCQ0RF
NjE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFB
Q0U2M0IxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUQ5NjRBMTg1Njk0MTcw
MDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBS
ZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsKQEAgLTgwMyw2ICs4MDQsNyBAQAogCQky
QUNDRjNERTE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQ0NGM0RD
MTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovOyB9
OwogCQkyQUNDRjNERjE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUND
RjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggKi87
IH07CiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKKwkJMkFERkEyNjMx
OEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dn
aW5nLmNwcCAqLzsgfTsKIAkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlE
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9Owog
CQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5k
eWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwpAQCAtMjI4OCw2ICsy
MjkwLDcgQEAKIAkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg4
MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJs
b2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFBQkNERTYxOEVGMjk0MjAwMDAy
MDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0xv
Z2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQ0U2M0ExOENBNUEwMzAw
RUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUg
LyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjI5Niw2ICsyMjk5LDcgQEAKIAkJMkFDQ0YzREMxODVGRTI2QjAwODNFMkFEIC8q
IERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBQ0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9u
UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJyaWVy
RWxpc2lvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBREZB
MjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMx
N0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxp
YnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OwpAQCAtMzYzMiw2ICszNjM2LDggQEAKIAkJCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAw
RUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQkyQTgzNjM4ODE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAorCQkJCTJBQUJDREU2
MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLywKKwkJCQkyQURGQTI2MjE4RUYzNTQw
MDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00OTUyLDYgKzQ5NTgsNyBAQAogCQkJCUExQTAw
OUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTY2Nzgs
NiArNjY4NSw3IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1
bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkFERkEyNjMx
OEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0
NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NMb2dnaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKworI2luY2x1ZGUgIkNsYXNzSW5mby5o
IgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBjaGFyKiBHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcoTGV2ZWwgbGV2
ZWwpCit7CisgICAgc3dpdGNoIChsZXZlbCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0
dXJuICJOb25lIjsKKyAgICBjYXNlIEJhc2ljOgorICAgICAgICByZXR1cm4gIkJhc2ljIjsKKyAg
ICBjYXNlIFZlcmJvc2U6CisgICAgICAgIHJldHVybiAiVmVyYm9zZSI7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICIi
OworICAgIH0KK30KKworY2xhc3MgTG9nZ2luZ0Z1bmN0b3IgeworcHVibGljOgorICAgIExvZ2dp
bmdGdW5jdG9yKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKKyAgICAgICAgOiBtX3Nsb3RWaXNp
dG9yKHNsb3RWaXNpdG9yKQorICAgIHsKKyAgICAgICAgbV9zYXZlZE1hcmtTdGFjay5yZXNpemUo
bV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5zaXplKCkpOworICAgICAgICBtX3Nsb3RWaXNpdG9y
Lm1hcmtTdGFjaygpLmZpbGxWZWN0b3IobV9zYXZlZE1hcmtTdGFjayk7CisgICAgfQorCisgICAg
fkxvZ2dpbmdGdW5jdG9yKCkKKyAgICB7CisgICAgICAgIHJldml2ZUNlbGxzKCk7CisgICAgfQor
CisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIG1fbGl2
ZUNlbGxzLmFwcGVuZChjZWxsKTsKKyAgICAgICAgTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwp
LT5jbGVhck1hcmtlZChjZWxsKTsKKyAgICB9CisKKyAgICB2b2lkIGxvZygpCisgICAgeworICAg
ICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CisgICAgICAgIGZvciAoSlNDZWxs
KiBjZWxsIDogbV9saXZlQ2VsbHMpIHsKKyAgICAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKCkt
PnZpc2l0Q2hpbGRyZW4oY2VsbCwgbV9zbG90VmlzaXRvcik7CisgICAgICAgICAgICBkYXRhTG9n
KCJcbiIsICpjZWxsLCAiOlxuIiwgbV9zbG90VmlzaXRvcik7CisgICAgICAgICAgICBmb3IgKGNv
bnN0IEpTQ2VsbCogbmVpZ2hib3IgOiBtX3Nsb3RWaXNpdG9yLm1hcmtTdGFjaygpKQorICAgICAg
ICAgICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihuZWlnaGJvciktPmNsZWFyTWFya2VkKG5l
aWdoYm9yKTsKKyAgICAgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJNYXJrU3RhY2soKTsKKyAg
ICAgICAgfQorICAgICAgICBtX3Nsb3RWaXNpdG9yLnJlc2V0KCk7CisgICAgfQorCisgICAgdm9p
ZCByZXZpdmVDZWxscygpCisgICAgeworICAgICAgICBmb3IgKEpTQ2VsbCogY2VsbCA6IG1fbGl2
ZUNlbGxzKQorICAgICAgICAgICAgTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5zZXRNYXJr
ZWQoY2VsbCk7CisKKyAgICAgICAgZm9yIChjb25zdCBKU0NlbGwqIGNlbGwgOiBtX3NhdmVkTWFy
a1N0YWNrKSB7CisgICAgICAgICAgICBtX3Nsb3RWaXNpdG9yLm1hcmtTdGFjaygpLmFwcGVuZChj
ZWxsKTsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPnNldFJlbWVtYmVy
ZWQodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlw
ZTsKKworICAgIHZvaWQgcmV0dXJuVmFsdWUoKSB7IH07CisKK3ByaXZhdGU6CisgICAgVmVjdG9y
PGNvbnN0IEpTQ2VsbCo+IG1fc2F2ZWRNYXJrU3RhY2s7CisgICAgVmVjdG9yPEpTQ2VsbCo+IG1f
bGl2ZUNlbGxzOworICAgIFNsb3RWaXNpdG9yJiBtX3Nsb3RWaXNpdG9yOworfTsKKwordm9pZCBH
Q0xvZ2dpbmc6OmR1bXBPYmplY3RHcmFwaChIZWFwKiBoZWFwKQoreworICAgIExvZ2dpbmdGdW5j
dG9yIGxvZ2dpbmdGdW5jdG9yKGhlYXAtPm1fc2xvdFZpc2l0b3IpOworICAgIEhlYXBJdGVyYXRp
b25TY29wZSBpdGVyYXRpb25TY29wZSgqaGVhcCk7CisgICAgaGVhcC0+b2JqZWN0U3BhY2UoKS5m
b3JFYWNoTGl2ZUNlbGwoaXRlcmF0aW9uU2NvcGUsIGxvZ2dpbmdGdW5jdG9yKTsKKyAgICBsb2dn
aW5nRnVuY3Rvci5sb2coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDTG9nZ2luZ19oCisjZGVmaW5lIEdDTG9nZ2luZ19o
CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSGVhcDsKKworY2xhc3MgR0NMb2dnaW5nIHsKK3B1YmxpYzoKKyAgICBlbnVtIExldmVsIDog
dWludDhfdCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBCYXNpYywKKyAgICAgICAgVmVy
Ym9zZQorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbGV2ZWxBc1N0cmluZyhMZXZl
bCk7CisgICAgc3RhdGljIHZvaWQgZHVtcE9iamVjdEdyYXBoKEhlYXAqKTsKK307CisKK3R5cGVk
ZWYgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEdDTG9nZ2luZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q1NlZ21lbnRlZEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvR0NTZWdtZW50ZWRBcnJheS5oCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdDU2VnbWVudGVkQQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBHQ1NlZ21lbnRlZEFycmF5IHsKICAgICBmcmllbmQgY2xh
c3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+OworICAgIGZyaWVuZCBjbGFzcyBHQ1NlZ21l
bnRlZEFycmF5SXRlcmF0b3I8Y29uc3QgVD47CiBwdWJsaWM6CiAgICAgR0NTZWdtZW50ZWRBcnJh
eShCbG9ja0FsbG9jYXRvciYpOwogICAgIH5HQ1NlZ21lbnRlZEFycmF5KCk7CkBAIC04MSw4ICs4
Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICB0eXBlZGVmIEdDU2VnbWVu
dGVkQXJyYXlJdGVyYXRvcjxUPiBpdGVyYXRvcjsKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0
dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPihtX3NlZ21lbnRzLmhlYWQoKSwgbV90b3Ap
OyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9y
PFQ+KCk7IH0KKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEdDU2VnbWVudGVk
QXJyYXlJdGVyYXRvcjxUPihtX3NlZ21lbnRzLmhlYWQoKSwgbV90b3ApOyB9CisgICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+KCk7IH0K
IAogcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4gc3RydWN0IENhcGFjaXR5
RnJvbVNpemUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzQsMTcgKzQ3NCwxMyBAQCB2b2lkIEhlYXA6OmdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoCiAgICAgfQogfQogCi12b2lkIEhlYXA6Om1hcmtSb290cygpCit2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjogTWFya2luZyIpOwogCiAgICAgR0NQ
SEFTRShNYXJrUm9vdHMpOwogICAgIEFTU0VSVChpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpOwog
Ci0jaWYgRU5BQkxFKE9CSkVDVF9NQVJLX0xPR0dJTkcpCi0gICAgZG91YmxlIGdjU3RhcnRUaW1l
ID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEdHQykKICAgICBWZWN0b3I8Y29uc3QgSlNDZWxsKj4gcmVtZW1iZXJlZFNldChtX3Nsb3RW
aXNpdG9yLm1hcmtTdGFjaygpLnNpemUoKSk7CiAgICAgbV9zbG90VmlzaXRvci5tYXJrU3RhY2so
KS5maWxsVmVjdG9yKHJlbWVtYmVyZWRTZXQpOwpAQCAtNTM1LDcgKzUzMSw3IEBAIHZvaWQgSGVh
cDo6bWFya1Jvb3RzKCkKIAogICAgIGNsZWFyUmVtZW1iZXJlZFNldChyZW1lbWJlcmVkU2V0KTsK
ICAgICBtX3NoYXJlZERhdGEuZGlkRmluaXNoTWFya2luZygpOwotICAgIHVwZGF0ZU9iamVjdENv
dW50cygpOworICAgIHVwZGF0ZU9iamVjdENvdW50cyhnY1N0YXJ0VGltZSk7CiAgICAgcmVzZXRW
aXNpdG9ycygpOwogfQogCkBAIC01OTksMTMgKzU5NSwyMSBAQCB2b2lkIEhlYXA6OnZpc2l0U21h
bGxTdHJpbmdzKCkKIHsKICAgICBHQ1BIQVNFKFZpc2l0U21hbGxTdHJpbmdzKTsKICAgICBtX3Zt
LT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2VzKG1fc2xvdFZpc2l0b3IpOworCisg
ICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJTbWFsbCBzdHJpbmdzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKKyAgICBtX3Nsb3RW
aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKIHZvaWQgSGVhcDo6dmlzaXRDb25zZXJ2YXRp
dmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCiB7CiAgICAgR0NQSEFTRShWaXNpdENv
bnNlcnZhdGl2ZVJvb3RzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJDb25z
ZXJ2YXRpdmUgUm9vdHMiKTsKICAgICBtX3Nsb3RWaXNpdG9yLmFwcGVuZChyb290cyk7CisKKyAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2coIkNvbnNlcnZhdGl2ZSBSb290czpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCkBAIC02MTMsMjkgKzYxNywzNCBAQCB2
b2lkIEhlYXA6OnZpc2l0Q29tcGlsZXJXb3JrbGlzdHMoKQogewogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIEdDUEhBU0UoVmlzaXRERkdXb3JrbGlzdHMpOwotICAgIE1BUktfTE9HX1JPT1QobV9z
bG90VmlzaXRvciwgIkRGRyBXb3JrbGlzdHMiKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBERkc6
Om51bWJlck9mV29ya2xpc3RzKCk7IGktLTspIHsKICAgICAgICAgaWYgKERGRzo6V29ya2xpc3Qq
IHdvcmtsaXN0ID0gREZHOjp3b3JrbGlzdEZvckluZGV4T3JOdWxsKGkpKQogICAgICAgICAgICAg
d29ya2xpc3QtPnZpc2l0Q2hpbGRyZW4obV9zbG90VmlzaXRvciwgbV9jb2RlQmxvY2tzKTsKICAg
ICB9CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkRGRyBXb3JrbGlzdHM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKworICAg
IG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKICNlbmRpZgogfQogCiB2b2lkIEhlYXA6
OnZpc2l0UHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikK
IHsKICAgICBHQ1BIQVNFKFZpc2l0UHJvdGVjdGVkT2JqZWN0cyk7Ci0gICAgTUFSS19MT0dfUk9P
VChtX3Nsb3RWaXNpdG9yLCAiUHJvdGVjdGVkIE9iamVjdHMiKTsKIAogICAgIGZvciAoYXV0byYg
cGFpciA6IG1fcHJvdGVjdGVkVmFsdWVzKQogICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQo
JnBhaXIua2V5KTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVy
Ym9zZSkKKyAgICAgICAgZGF0YUxvZygiUHJvdGVjdGVkIE9iamVjdHM6XG4iLCBtX3Nsb3RWaXNp
dG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9pZCBI
ZWFwOjp2aXNpdFRlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRv
cikKIHsKICAgICBHQ1BIQVNFKFZpc2l0VGVtcFNvcnRWZWN0b3JzKTsKLSAgICBNQVJLX0xPR19S
T09UKG1fc2xvdFZpc2l0b3IsICJUZW1wIFNvcnQgVmVjdG9ycyIpOwotCiAgICAgdHlwZWRlZiBW
ZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+Kj4g
VmVjdG9yT2ZWYWx1ZVN0cmluZ1ZlY3RvcnM7CiAKICAgICBmb3IgKGF1dG8qIHZlY3RvciA6IG1f
dGVtcFNvcnRpbmdWZWN0b3JzKSB7CkBAIC02NDQsNTMgKzY1Myw3MiBAQCB2b2lkIEhlYXA6OnZp
c2l0VGVtcFNvcnRWZWN0b3JzKEhlYXBSb290CiAgICAgICAgICAgICAgICAgaGVhcFJvb3RWaXNp
dG9yLnZpc2l0KCZ2YWx1ZVN0cmluZ1BhaXIuZmlyc3QpOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJUZW1wIFNvcnQgVmVjdG9yczpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCiB2b2lkIEhlYXA6OnZpc2l0QXJndW1l
bnRCdWZmZXJzKEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKE1hcmtp
bmdBcmd1bWVudEJ1ZmZlcnMpOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIkFy
Z3VtZW50IEJ1ZmZlcnMiKTsKICAgICBpZiAoIW1fbWFya0xpc3RTZXQgfHwgIW1fbWFya0xpc3RT
ZXQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6
Om1hcmtMaXN0cyh2aXNpdG9yLCAqbV9tYXJrTGlzdFNldCk7CisKKyAgICBpZiAoT3B0aW9uczo6
bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFyZ3VtZW50
IEJ1ZmZlcnM6XG4iLCBtX3Nsb3RWaXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRl
QW5kRHJhaW4oKTsKIH0KIAogdm9pZCBIZWFwOjp2aXNpdEV4Y2VwdGlvbihIZWFwUm9vdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CiAgICAgR0NQSEFTRShNYXJraW5nRXhjZXB0aW9uKTsKLSAgICBNQVJL
X0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJFeGNlcHRpb25zIik7CiAgICAgaWYgKCFtX3ZtLT5l
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmlzaXRvci52aXNpdChtX3ZtLT5h
ZGRyZXNzT2ZFeGNlcHRpb24oKSk7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xv
Z2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkV4Y2VwdGlvbnM6XG4iLCBtX3Nsb3RW
aXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9p
ZCBIZWFwOjp2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIEdDUEhBU0UoVmlzaXRTdHJvbmdIYW5kbGVzKTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xv
dFZpc2l0b3IsICJTdHJvbmcgSGFuZGxlcyIpOwogICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25n
SGFuZGxlcyh2aXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2lu
Zzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiU3Ryb25nIEhhbmRsZXM6XG4iLCBtX3Nsb3RW
aXNpdG9yKTsKKwogICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKIH0KIAogdm9p
ZCBIZWFwOjp2aXNpdEhhbmRsZVN0YWNrKEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBHQ1BIQVNFKFZpc2l0SGFuZGxlU3RhY2spOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90Vmlz
aXRvciwgIkhhbmRsZSBTdGFjayIpOwogICAgIG1faGFuZGxlU3RhY2sudmlzaXQodmlzaXRvcik7
CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAg
ICAgIGRhdGFMb2coIkhhbmRsZSBTdGFjazpcbiIsIG1fc2xvdFZpc2l0b3IpOworCiAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogfQogCiB2b2lkIEhlYXA6OnRyYWNlQ29kZUJs
b2Nrc0FuZEpJVFN0dWJSb3V0aW5lcygpCiB7CiAgICAgR0NQSEFTRShUcmFjZUNvZGVCbG9ja3NB
bmRKSVRTdHViUm91dGluZXMpOwotICAgIE1BUktfTE9HX1JPT1QobV9zbG90VmlzaXRvciwgIlRy
YWNlIENvZGUgQmxvY2tzIGFuZCBKSVQgU3R1YiBSb3V0aW5lcyIpOwogICAgIG1fY29kZUJsb2Nr
cy50cmFjZU1hcmtlZChtX3Nsb3RWaXNpdG9yKTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy50cmFj
ZU1hcmtlZFN0dWJSb3V0aW5lcyhtX3Nsb3RWaXNpdG9yKTsKKworICAgIGlmIChPcHRpb25zOjps
b2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiQ29kZSBCbG9j
a3MgYW5kIEpJVCBTdHViIFJvdXRpbmVzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICBtX3Ns
b3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKQEAgLTcwNSwxMiArNzMzLDE1IEBAIHZv
aWQgSGVhcDo6Y29udmVyZ2UoKQogdm9pZCBIZWFwOjp2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBHQ1BIQVNFKFZpc2l0aW5nTGl2ZVdlYWtIYW5kbGVz
KTsKLSAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJMaXZlIFdlYWsgSGFuZGxlcyIp
OwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0
cyh2aXNpdG9yKTsKICAgICAgICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgIGlm
IChtX3Nsb3RWaXNpdG9yLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKKyAgICAgICAgICAg
IGRhdGFMb2coIkxpdmUgV2VhayBIYW5kbGVzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKICAgICAg
ICAgewogICAgICAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKG1fc2xvdFZpc2l0
b3IpOwogICAgICAgICAgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwpAQCAtNzM0
LDE3ICs3NjUsMTcgQEAgdm9pZCBIZWFwOjpjbGVhclJlbWVtYmVyZWRTZXQoVmVjdG9yPGNvbgog
I2VuZGlmCiB9CiAKLXZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKCkKK3ZvaWQgSGVhcDo6
dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1N0YXJ0VGltZSkKIHsKICAgICBHQ0NPVU5URVIo
VmlzaXRlZFZhbHVlQ291bnQsIG1fc2xvdFZpc2l0b3IudmlzaXRDb3VudCgpKTsKIAotI2lmIEVO
QUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAgIHNpemVfdCB2aXNpdENvdW50ID0gbV9zbG90
VmlzaXRvci52aXNpdENvdW50KCk7CisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0gR0NMb2dn
aW5nOjpWZXJib3NlKSB7CisgICAgICAgIHNpemVfdCB2aXNpdENvdW50ID0gbV9zbG90VmlzaXRv
ci52aXNpdENvdW50KCk7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHZpc2l0Q291bnQg
Kz0gbV9zaGFyZWREYXRhLmNoaWxkVmlzaXRDb3VudCgpOwotI2VuZGlmCi0gICAgTUFSS19MT0df
TUVTU0FHRTIoIlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0cyBhZnRlciBmdWxsIEdDICVsdSwgdG9v
ayAlLjZmIHNlY3NcbiIsIHZpc2l0Q291bnQsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgLSBnY1N0YXJ0VGltZSk7CisgICAgICAgIHZpc2l0Q291bnQgKz0gbV9zaGFyZWREYXRh
LmNoaWxkVmlzaXRDb3VudCgpOwogI2VuZGlmCisgICAgICAgIGRhdGFMb2dGKCJcbk51bWJlciBv
ZiBsaXZlIE9iamVjdHMgYWZ0ZXIgR0MgJWx1LCB0b29rICUuNmYgc2Vjc1xuIiwgdmlzaXRDb3Vu
dCwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdjU3RhcnRUaW1lKTsKKyAg
ICB9CiAKICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7
CiAgICAgICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0
ZWQoKTsKQEAgLTk1MSw3ICs5ODIsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlv
biBjb2xsZWN0CiAgICAgc3RvcEFsbG9jYXRpb24oKTsKICAgICBmbHVzaFdyaXRlQmFycmllckJ1
ZmZlcigpOwogCi0gICAgbWFya1Jvb3RzKCk7CisgICAgbWFya1Jvb3RzKGdjU3RhcnRUaW1lKTsK
IAogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX01BUktFRCgpOwogCkBAIC0xMTc4LDYgKzEyMDksOSBA
QCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAKICAgICBpZiAoT3B0
aW9uczo6c2hvd09iamVjdFN0YXRpc3RpY3MoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnNo
b3dPYmplY3RTdGF0aXN0aWNzKHRoaXMpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkgPT0g
R0NMb2dnaW5nOjpWZXJib3NlKQorICAgICAgICBHQ0xvZ2dpbmc6OmR1bXBPYmplY3RHcmFwaCh0
aGlzKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDcgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKICAgICBmcmllbmQg
Y2xhc3MgRGVsYXllZFJlbGVhc2VTY29wZTsKICAgICBmcmllbmQgY2xhc3MgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOworICAgIGZyaWVuZCBjbGFzcyBHQ0xvZ2dpbmc7CiAgICAgZnJpZW5kIGNsYXNz
IEhhbmRsZVNldDsKICAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTI2MSw3ICsyNjIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxv
Y2F0aW9uKCk7CiAKLSAgICB2b2lkIG1hcmtSb290cygpOworICAgIHZvaWQgbWFya1Jvb3RzKGRv
dWJsZSBnY1N0YXJ0VGltZSk7CiAgICAgdm9pZCBnYXRoZXJTdGFja1Jvb3RzKENvbnNlcnZhdGl2
ZVJvb3RzJiwgdm9pZCoqIGR1bW15KTsKICAgICB2b2lkIGdhdGhlckpTU3RhY2tSb290cyhDb25z
ZXJ2YXRpdmVSb290cyYpOwogICAgIHZvaWQgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJik7CkBAIC0yNzksNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bnZlcmdlKCk7CiAgICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwog
ICAgIHZvaWQgY2xlYXJSZW1lbWJlcmVkU2V0KFZlY3Rvcjxjb25zdCBKU0NlbGwqPiYpOwotICAg
IHZvaWQgdXBkYXRlT2JqZWN0Q291bnRzKCk7CisgICAgdm9pZCB1cGRhdGVPYmplY3RDb3VudHMo
ZG91YmxlIGdjU3RhcnRUaW1lKTsKICAgICB2b2lkIHJlc2V0VmlzaXRvcnMoKTsKIAogICAgIHZv
aWQgcmVhcFdlYWtIYW5kbGVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMwICsyNiw2IEBACiAjaWZuZGVmIE1h
cmtTdGFja19oCiAjZGVmaW5lIE1hcmtTdGFja19oCiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktf
TE9HR0lORykKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTAobWVzc2FnZSkgZGF0YUxvZ0YobWVz
c2FnZSkKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTEobWVzc2FnZSwgYXJnMSkgZGF0YUxvZ0Yo
bWVzc2FnZSwgYXJnMSkKLSNkZWZpbmUgTUFSS19MT0dfTUVTU0FHRTIobWVzc2FnZSwgYXJnMSwg
YXJnMikgZGF0YUxvZ0YobWVzc2FnZSwgYXJnMSwgYXJnMikKLSNkZWZpbmUgTUFSS19MT0dfUk9P
VCh2aXNpdG9yLCByb290TmFtZSkgXAotICAgIGRhdGFMb2dGKCJcbiVzOiAiLCByb290TmFtZSk7
IFwKLSAgICAodmlzaXRvcikucmVzZXRDaGlsZENvdW50KCkKLSNkZWZpbmUgTUFSS19MT0dfUEFS
RU5UKHZpc2l0b3IsIHBhcmVudCkgXAotICAgIGRhdGFMb2dGKCJcbiVwICglcyk6ICIsIHBhcmVu
dCwgcGFyZW50LT5jbGFzc05hbWUoKSA/IHBhcmVudC0+Y2xhc3NOYW1lKCkgOiAidW5rbm93biIp
OyBcCi0gICAgKHZpc2l0b3IpLnJlc2V0Q2hpbGRDb3VudCgpCi0jZGVmaW5lIE1BUktfTE9HX0NI
SUxEKHZpc2l0b3IsIGNoaWxkKSBcCi0gICAgaWYgKCh2aXNpdG9yKS5jaGlsZENvdW50KCkpIFwK
LSAgICBkYXRhTG9nRlN0cmluZygiLCAiKTsgXAotICAgIGRhdGFMb2dGKCIlcCIsIGNoaWxkKTsg
XAotICAgICh2aXNpdG9yKS5pbmNyZW1lbnRDaGlsZENvdW50KCkKLSNlbHNlCi0jZGVmaW5lIE1B
UktfTE9HX01FU1NBR0UwKG1lc3NhZ2UpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1B
UktfTE9HX01FU1NBR0UxKG1lc3NhZ2UsIGFyZzEpIGRvIHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVm
aW5lIE1BUktfTE9HX01FU1NBR0UyKG1lc3NhZ2UsIGFyZzEsIGFyZzIpIGRvIHsgfSB3aGlsZSAo
ZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX1JPT1QodmlzaXRvciwgcm9vdE5hbWUpIGRvIHsgfSB3
aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBwYXJlbnQpIGRv
IHsgfSB3aGlsZSAoZmFsc2UpCi0jZGVmaW5lIE1BUktfTE9HX0NISUxEKHZpc2l0b3IsIGNoaWxk
KSBkbyB7IH0gd2hpbGUgKGZhbHNlKQotI2VuZGlmCi0KICNpbmNsdWRlICJHQ1NlZ21lbnRlZEFy
cmF5SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcz
LDQgKzM3MywxMCBAQCB2b2lkIFNsb3RWaXNpdG9yOjp2YWxpZGF0ZShKU0NlbGwqKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgU2xvdFZpc2l0b3I6OmR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdAoreworICAg
IGZvciAoY29uc3QgSlNDZWxsKiBjZWxsIDogbWFya1N0YWNrKCkpCisgICAgICAgIGRhdGFMb2co
KmNlbGwsICJcbiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBwdWJsaWM6CiAgICAgflNsb3RWaXNpdG9yKCk7CiAKICAgICBNYXJrU3RhY2tB
cnJheSYgbWFya1N0YWNrKCkgeyByZXR1cm4gbV9zdGFjazsgfQorICAgIGNvbnN0IE1hcmtTdGFj
a0FycmF5JiBtYXJrU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3N0YWNrOyB9CiAKICAgICBWTSYg
dm0oKTsKICAgICBjb25zdCBWTSYgdm0oKSBjb25zdDsKQEAgLTEwOSwxMSArMTEwLDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1JlZmVyZW5jZUhh
cnZlc3RlciopOwogICAgIHZvaWQgYWRkVW5jb25kaXRpb25hbEZpbmFsaXplcihVbmNvbmRpdGlv
bmFsRmluYWxpemVyKik7CiAKLSNpZiBFTkFCTEUoT0JKRUNUX01BUktfTE9HR0lORykKICAgICBp
bmxpbmUgdm9pZCByZXNldENoaWxkQ291bnQoKSB7IG1fbG9nQ2hpbGRDb3VudCA9IDA7IH0KICAg
ICBpbmxpbmUgdW5zaWduZWQgY2hpbGRDb3VudCgpIHsgcmV0dXJuIG1fbG9nQ2hpbGRDb3VudDsg
fQogICAgIGlubGluZSB2b2lkIGluY3JlbWVudENoaWxkQ291bnQoKSB7IG1fbG9nQ2hpbGRDb3Vu
dCsrOyB9Ci0jZW5kaWYKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyOwpAQCAtMTQ4LDkg
KzE0OSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBKU1Zh
bHVlPiBVbmlxdWVTdHJpbmdNYXA7CiAgICAgVW5pcXVlU3RyaW5nTWFwIG1fdW5pcXVlU3RyaW5n
czsKIAotI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQogICAgIHVuc2lnbmVkIG1fbG9n
Q2hpbGRDb3VudDsKLSNlbmRpZgogCiBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJ
KHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOCArMTE2LDYgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFNsb3RWaXNpdG9yOjppbnRlcm5hbAogICAgIGNlbGwtPnNldE1hcmtlZCgpOwog
ICAgIG1fYnl0ZXNWaXNpdGVkICs9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2VsbFNp
emUoKTsKICAgICAgICAgCi0gICAgTUFSS19MT0dfQ0hJTEQoKnRoaXMsIGNlbGwpOwotCiAgICAg
dW5jb25kaXRpb25hbGx5QXBwZW5kKGNlbGwpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAKICAgICB0eXBlZGVmIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXJWaWV3PiAoKkdldFR5cGVkQXJyYXlJbXBsKShKU0FycmF5QnVmZmVyVmll
dyopOwogICAgIEdldFR5cGVkQXJyYXlJbXBsIGdldFR5cGVkQXJyYXlJbXBsOworCisgICAgdHlw
ZWRlZiB2b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIpKGNvbnN0IEpTQ2VsbCosIFByaW50
U3RyZWFtJik7CisgICAgRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIgZHVtcFRvU3RyZWFtOwogfTsK
IAogI2RlZmluZSBDUkVBVEVfTUVNQkVSX0NIRUNLRVIobWVtYmVyKSBcCkBAIC0xMzgsNyArMTQx
LDggQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFz
SW5zdGFuY2UsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwKICAg
ICAgICAgJkNsYXNzTmFtZTo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSwgXAotICAgICAgICAmQ2xh
c3NOYW1lOjpnZXRUeXBlZEFycmF5SW1wbCBcCisgICAgICAgICZDbGFzc05hbWU6OmdldFR5cGVk
QXJyYXlJbXBsLCBcCisgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSBcCiAgICAgfSwg
XAogICAgIENsYXNzTmFtZTo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTY2ODA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsMTYgQEAgdm9pZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGNl
bGwtPkpTQ2VsbDo6fkpTQ2VsbCgpOwogfQogCit2b2lkIEpTQ2VsbDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIG1ldGhvZFRhYmxlKCktPmR1bXBUb1N0cmVhbSh0aGlzLCBv
dXQpOworfQorCit2b2lkIEpTQ2VsbDo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwg
UHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBvdXQucHJpbnRmKCI8JXAsICVzPiIsIGNlbGwsIGNl
bGwtPmNsYXNzTmFtZSgpKTsKK30KKwogdm9pZCBKU0NlbGw6OmNvcHlCYWNraW5nU3RvcmUoSlND
ZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pCiB7CiB9CkBAIC0xOTIsNyArMjAyLDcgQEAg
U3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KgogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAotY29uc3QgY2hhciogSlNDZWxsOjpjbGFzc05hbWUoKQorY29uc3QgY2hhciog
SlNDZWxsOjpjbGFzc05hbWUoKSBjb25zdAogewogICAgIHJldHVybiBjbGFzc0luZm8oKS0+Y2xh
c3NOYW1lOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgVHlwZUlu
Zm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzOyB9CiAKLSAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUoKTsKKyAgICBjb25zdCBjaGFyKiBj
bGFzc05hbWUoKSBjb25zdDsKIAogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFN0cmluZyYpIGNvbnN0
OwpAQCAtMTIzLDYgKzEyMyw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBD
b3B5VmlzaXRvciYsIENvcHlUb2tlbik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA2LDggKzEwNiw2IEBAIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKFZNJiAK
IAogaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgTUFSS19MT0dfUEFSRU5UKHZpc2l0b3IsIGNlbGwpOwot
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodmlzaXRvci52bSgp
KTsKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlz
aW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMjQgKzQ5LDI3IEBAIHZvaWQgSlNTdHJpbmc6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsK
IH0KIAotdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQordm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCog
Y2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1N0cmluZyo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgCi0gICAgTUFSS19MT0dfTUVTU0FHRTEoIlsldV06ICIsIHRoaXNP
YmplY3QtPmxlbmd0aCgpKTsKLQotI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAg
IGlmICghdGhpc09iamVjdC0+aXNSb3BlKCkpIHsKKyAgICBjb25zdCBKU1N0cmluZyogdGhpc09i
amVjdCA9IGpzQ2FzdDxjb25zdCBKU1N0cmluZyo+KGNlbGwpOworICAgIG91dC5wcmludGYoIjwl
cCwgJXMsIFsldV0sICIsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmNsYXNzTmFtZSgpLCB0aGlz
T2JqZWN0LT5sZW5ndGgoKSk7IAorICAgIGlmICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKKyAgICAg
ICAgb3V0LnByaW50ZigiW3JvcGVdIik7CisgICAgZWxzZSB7CiAgICAgICAgIFdURjo6U3RyaW5n
SW1wbCogb3VySW1wbCA9IHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpOwogICAgICAgICBpZiAo
b3VySW1wbC0+aXM4Qml0KCkpCi0gICAgICAgICAgICBNQVJLX0xPR19NRVNTQUdFMSgiWzggJXBd
Iiwgb3VySW1wbC0+Y2hhcmFjdGVyczgoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbOCAl
cF0iLCBvdXJJbXBsLT5jaGFyYWN0ZXJzOCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
TUFSS19MT0dfTUVTU0FHRTEoIlsxNiAlcF0iLCBvdXJJbXBsLT5jaGFyYWN0ZXJzMTYoKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIE1BUktfTE9HX01FU1NBR0UwKCJbcm9wZV06ICIpOwotI2VuZGlm
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbMTYgJXBdIiwgb3VySW1wbC0+Y2hhcmFjdGVyczE2
KCkpOworICAgIH0KKyAgICBvdXQucHJpbnRmKCI+Iik7Cit9CiAKK3ZvaWQgSlNTdHJpbmc6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzUm9wZSgpKQogICAgICAgICBzdGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcqPih0aGlz
T2JqZWN0KS0+dmlzaXRGaWJlcnModmlzaXRvcik7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB2
YWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cnlHZXRWYWx1
ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB0cnlHZXRWYWx1ZUltcGwoKSBj
b25zdDsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAg
ICAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHRvQm9vbGVhbigpIGNv
bnN0OwpAQCAtMTY3LDYgKzE2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKKyAgICAgICAgc3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0
IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBlbnVtIHsKQEAgLTI0MSw3ICsy
NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdG1wOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2pz
U3RyaW5nLT5tX2xlbmd0aDsgfQorICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9qc1N0cmluZy0+bV9sZW5ndGg7IH0KIAogICAgICAgICBwcml2YXRlOgogICAg
ICAgICAgICAgdm9pZCBleHBhbmQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxNjY4MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMjYgQEAg
c3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBPcAogICAgIHJldHVybiB2YWx1
ZS5pbml0KHN0cmluZyk7CiB9CiAKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCit7CisgICAgaWYgKCFzdHJjYXNlY21wKHN0cmlu
ZywgIm5vbmUiKSB8fCAhc3RyY2FzZWNtcChzdHJpbmcsICJubyIpIHx8ICFzdHJjYXNlY21wKHN0
cmluZywgImZhbHNlIikgfHwgIXN0cmNtcChzdHJpbmcsICIwIikpIHsKKyAgICAgICAgdmFsdWUg
PSBHQ0xvZ2dpbmc6Ok5vbmU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
ICghc3RyY2FzZWNtcChzdHJpbmcsICJiYXNpYyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgInll
cyIpIHx8ICFzdHJjYXNlY21wKHN0cmluZywgInRydWUiKSB8fCAhc3RyY21wKHN0cmluZywgIjEi
KSkgeworICAgICAgICB2YWx1ZSA9IEdDTG9nZ2luZzo6QmFzaWM7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmICghc3RyY2FzZWNtcChzdHJpbmcsICJ2ZXJib3NlIikgfHwg
IXN0cmNtcChzdHJpbmcsICIyIikpIHsKKyAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OlZlcmJv
c2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGlj
KFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lKQogewpAQCAtMjg0LDcgKzMwNCw3IEBAIGJv
b2wgT3B0aW9uczo6c2V0T3B0aW9uKGNvbnN0IGNoYXIqIGFyZykKICNkZWZpbmUgRk9SX0VBQ0hf
T1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXykgICAgXAogICAgIGlmICghc3RybmNt
cChhcmcsICNuYW1lXywgZXF1YWxTdHIgLSBhcmcpKSB7ICAgICAgICBcCiAgICAgICAgIHR5cGVf
IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFs
dWUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2
YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3RyLCB2YWx1ZSk7ICAgICAgICAgIFwKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBA
IC0zMzAsNiArMzUwLDkgQEAgdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKE9wdGlvbklEIGlkLCBG
SQogICAgIGNhc2Ugb3B0aW9uUmFuZ2VUeXBlOgogICAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVz
Iiwgc19vcHRpb25zW2lkXS51Lm9wdGlvblJhbmdlVmFsLnJhbmdlU3RyaW5nKCkpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIGdjTG9nTGV2ZWxUeXBlOgorICAgICAgICBmcHJpbnRmKHN0cmVh
bSwgIiVzIiwgR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKHNfb3B0aW9uc1tpZF0udS5nY0xvZ0xl
dmVsVmFsKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBmcHJpbnRmKHN0cmVhbSwgIiVz
IiwgZm9vdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBPcHRpb25z
X2gKICNkZWZpbmUgT3B0aW9uc19oCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKICNpbmNsdWRl
ICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC0yNTgsNyArMjU5LDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsK
ICAgICB2KGJvb2wsIG9iamVjdHNBcmVJbW1vcnRhbCwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNo
b3dPYmplY3RTdGF0aXN0aWNzLCBmYWxzZSkgXAogICAgIFwKLSAgICB2KGJvb2wsIGxvZ0dDLCBm
YWxzZSkgXAorICAgIHYoZ2NMb2dMZXZlbCwgbG9nR0MsIEdDTG9nZ2luZzo6Tm9uZSkgXAogICAg
IHYoYm9vbCwgZGlzYWJsZUdDLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNp
emUsIDApIFwKICAgICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKQEAgLTMw
Myw2ICszMDQsNyBAQCBwcml2YXRlOgogICAgICAgICBkb3VibGVUeXBlLAogICAgICAgICBpbnQz
MlR5cGUsCiAgICAgICAgIG9wdGlvblJhbmdlVHlwZSwKKyAgICAgICAgZ2NMb2dMZXZlbFR5cGUs
CiAgICAgfTsKIAogICAgIC8vIEZvciBzdG9yaW5nIGZvciBhbiBvcHRpb24gdmFsdWU6CkBAIC0z
MTMsNiArMzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWw7CiAg
ICAgICAgICAgICBpbnQzMiBpbnQzMlZhbDsKICAgICAgICAgICAgIE9wdGlvblJhbmdlIG9wdGlv
blJhbmdlVmFsOworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsVmFsOwog
ICAgICAgICB9IHU7CiAgICAgICAgIGJvb2wgZGlkT3ZlcnJpZGU7CiAgICAgfTsKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNjY4MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgRW5oYW5jZWQgR0MgbG9nZ2luZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIE9CSkVDVF9NQVJLX0xP
R0dJTkcKKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorCiAyMDE0LTA0LTAzICBac29sdCBCb3JiZWx5ICA8enNib3JiZWx5LnUtc3pl
Z2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIENTUyBKSVQg
YWdhaW4sIGl0IHdvcmtzIGZpbmUgYWZ0ZXIgcjE2NjY2Ni4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaAkocmV2aXNpb24gMTY2ODA3KQorKysgU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIyLDEwICs2MjIsNiBAQAogI2RlZmluZSBFTkFCTEVf
Tk9USUZJQ0FUSU9OUyAwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9PQkpFQ1RfTUFS
S19MT0dHSU5HKQotI2RlZmluZSBFTkFCTEVfT0JKRUNUX01BUktfTE9HR0lORyAwCi0jZW5kaWYK
LQogI2lmICFkZWZpbmVkKEVOQUJMRV9PUEVOQ0wpCiAjZGVmaW5lIEVOQUJMRV9PUEVOQ0wgMAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE2NjgwNykKKysrIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0MCw3ICs5NDAsNyBAQAogI2RlZmlu
ZSBFTkFCTEVfQ09NUEFSRV9BTkRfU1dBUCAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJM
RV9QQVJBTExFTF9HQykgJiYgIUVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKSAmJiAoT1MoREFS
V0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykpICYmIEVOQUJMRShDT01QQVJF
X0FORF9TV0FQKQorI2lmICFkZWZpbmVkKEVOQUJMRV9QQVJBTExFTF9HQykgJiYgKE9TKERBUldJ
TikgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspKSAmJiBFTkFCTEUoQ09NUEFSRV9B
TkRfU1dBUCkKICNkZWZpbmUgRU5BQkxFX1BBUkFMTEVMX0dDIDEKICNlbmRpZgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>