<?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>72547</bug_id>
          
          <creation_ts>2011-11-16 14:25:45 -0800</creation_ts>
          <short_desc>Text tracks should be treated differently according to their kind</short_desc>
          <delta_ts>2012-01-31 22:23:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dw.im</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504256</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-16 14:25:45 -0800</bug_when>
    <thetext>4.8.9 The track element
http://www.whatwg.org/specs/web-apps/current-work/#the-track-element
See descriptions of subtitles, captions, descriptions, chapters, and metadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505108</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-17 12:38:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/10464470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519569</commentid>
    <comment_count>2</comment_count>
      <attachid>118880</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-12 15:19:08 -0800</bug_when>
    <thetext>Created attachment 118880
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519576</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 15:24:42 -0800</bug_when>
    <thetext>Attachment 118880 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/medi...&quot; exit_code: 1

Source/WebCore/html/HTMLMediaElement.h:203:  The parameter name &quot;trackElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 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>521247</commentid>
    <comment_count>4</comment_count>
      <attachid>119286</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-14 13:35:34 -0800</bug_when>
    <thetext>Created attachment 119286
Updated patch

Update patch as Alexey pointed out that track selection logic should not run until the media element has been closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522019</commentid>
    <comment_count>5</comment_count>
      <attachid>119286</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-15 10:19:20 -0800</bug_when>
    <thetext>Comment on attachment 119286
Updated patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2296
&gt; +    Settings* settings = document()-&gt;settings();
&gt; +

You could pull the settings null check up here and avoid the duplication below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522067</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-15 10:56:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 119286 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119286&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:2296
&gt; &gt; +    Settings* settings = document()-&gt;settings();
&gt; &gt; +
&gt; 
&gt; You could pull the settings null check up here and avoid the duplication below.

Thanks, I will fix that in a follow up patch so I can use the commit-queue on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522092</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-15 11:20:01 -0800</bug_when>
    <thetext>Or not. Committed by hand so I can get on with things.

http://trac.webkit.org/changeset/102968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526938</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-23 19:49:52 -0800</bug_when>
    <thetext>Mac rebaseline done in http://trac.webkit.org/changeset/103642.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118880</attachid>
            <date>2011-12-12 15:19:08 -0800</date>
            <delta_ts>2011-12-14 13:35:34 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_mode9.txt</filename>
            <type>text/plain</type>
            <size>43297</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjYyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDExLTEyLTEyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgdHJhY2tzIHNo
b3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5IGFjY29yZGluZyB0byB0aGVpciBraW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90
cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAgICAgICBtZWRpYS90
cmFjay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFjay5odG1sCisgICAgICAgICAg
ICAgICBtZWRpYS90cmFjay90cmFjay1tb2RlLXRyaWdnZXJzLWxvYWRpbmcuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIG1fdHJhY2tzQXJlUmVh
ZHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCk6
IENhbGwgY29uZmlndXJlVGV4dFRyYWNrcyBub3QgY2FsbCBzY2hlZHVsZUxvYWQsIAorICAgICAg
ICAgICAgaXQganVzdCBzY2hlZHVsZXMgdGhlIGxvYWQgdGltZXIgYWdhaW4uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6IEFkZCBhbGwgbm9uLWRp
c2FibGVkIHRyYWNrIGVsZW1lbnRzIHRvIGEgdmVjdG9yCisgICAgICAgICAgICBzbyB3ZSBjYW4g
cHJldmVudCB0aGUgbWVkaWEgZWxlbWVudCdzIHJlYWR5U3RhdGUgZnJvbSByZWFjaGluZyBIQVZF
X01FVEFEQVRBIHVudGlsIHRoZQorICAgICAgICAgICAgdHJhY2tzIGFyZSByZWFkeS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NBcmVSZWFkeSk6IE5ldy4g
UmV0dXJuIGZhbHNlIHVubGVzcyBhbGwgdHJhY2tzIHRoYXQgd2VyZQorICAgICAgICAgICAgbm90
IGRpc2FibGVkIHdoZW4gbG9hZGluZyBzdGFydGVkIGhhdmUgbG9hZGVkIG9yIGZhaWxlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKTogQ2FsbCBzZXRSZWFkeVN0YXRlIHdoZW4gYSB0cmFjayBpcworICAgICAgICAgICAgc3Rv
cHMgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a01vZGVDaGFuZ2VkKTogVHJpZ2dlciA8dHJhY2s+IGxvYWRpbmcgd2hlbiB0aGUgbW9kZQorICAg
ICAgICAgICAgY2hhbmdlcyB0byBoaWRkZW4gb3Igc2hvd2luZyBmb3IgdGhlIGZpcnN0IHRpbWUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKTogRG8g
bm90IGFkdmFuY2UgdG8gSEFWRV9NRVRBREFUQSBvciBoaWdoZXIgd2hpbGUKKyAgICAgICAgICAg
IHRyYWNrIGVsZW1lbnRzIGFyZSBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6YWRkVHJhY2spOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKTogTmV3LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQpOiBGbGFnIGEgdHJhY2sgYXMgdW5j
b25maWd1cmVkIHNvIGl0IHdpbGwgYmUKKyAgICAgICAgICAgIHJlY29uZmlndXJlZCBpZiBpdCBp
cyBhZGRlZCB0byBhbm90aGVyIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UpOiBOZXcuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2spOiBO
ZXcuIENvbnNpZGVyIHVzZXIgcHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2spOiBOZXcuIENvbmZpZ3VyZSBhIHRyYWNrIGFz
IHBlciB0aGUgdXNlcidzIHByZWZlcmVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcyk6IE5ldy4gQ29uZmlndXJlIGFsbCB0cmFjayBl
bGVtZW50cy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAq
IGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tF
bGVtZW50OjpIVE1MVHJhY2tFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2hhc0JlZW5Db25maWd1cmVk
LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyYWNrRWxlbWVudDo6aGFzQmVlbkNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyYWNrRWxlbWVudDo6c2V0SGFzQmVlbkNvbmZpZ3VyZWQpOgorCisgICAgICAgICogaHRt
bC9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2sp
OiBJbml0aWFsaXplIG1fbW9kZSB0byBESVNBQkxFRCwgbm90IEhJRERFTi4gSW5pdGlhbGl6ZSBt
X3Nob3dpbmdCeURlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUp
OiBDbGVhciB0aGUgInNob3dpbmcgYnkgZGVmYXVsdCIgZmxhZyB3aGVuIGEgdHJhY2sncyBtb2Rl
IGlzCisgICAgICAgICAgICBleHBsaWNpdGx5IHNldCB0byBTSE9XSU5HLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjptb2RlKTogUmV0dXJuIFNIT1dJTkcgd2hlbmV2ZXIgdGhlICJzaG93
aW5nIGJ5IGRlZmF1bHQiIGZsYWcgaXMgc2V0LgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNob3dpbmdCeURlZmF1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRTaG93aW5nQnlEZWZhdWx0KToKKworICAgICAgICAq
IGh0bWwvVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6
aXNBY3RpdmUpOiBSZXR1cm4gZmFsc2UgaWYgYSBjdWUgaGFzIG5vIHRyYWNrLCBvciBpZiBpdHMg
dHJhY2sgaXMgZGlzYWJsZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnNldElz
QWN0aXZlKTogRG9uJ3QgZW5hYmxlIGEgY3VlIGlmIGl0IGhhcyBubyB0cmFjaywgb3IgaWYgaXRz
IHRyYWNrCisgICAgICAgICAgICBpcyBkaXNhYmxlZC4KKwogMjAxMS0xMi0xMiAgRGF2aWQgR3Jv
Z2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGNvbXBpbGF0aW9uIGVy
cm9yIHdoZW4gIUVOQUJMRShXT1JLRVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTIgKzIyOCwxMyBA
QCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBtX2xvYWRJ
bml0aWF0ZWRCeVVzZXJHZXN0dXJlKGZhbHNlKQogICAgICwgbV9jb21wbGV0ZWx5TG9hZGVkKGZh
bHNlKQogICAgICwgbV9oYXZlUHJlcGFyZWRUb1BsYXkoZmFsc2UpCi0jaWYgRU5BQkxFKFdFQl9B
VURJTykKLSAgICAsIG1fYXVkaW9Tb3VyY2VOb2RlKDApCi0jZW5kaWYKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX3RleHRUcmFj
a3MoMCkKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgLCBtX2F1ZGlvU291cmNl
Tm9kZSgwKQorI2VuZGlmCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudCIpOwogICAgIGRvY3VtZW50LT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrcyh0aGlzKTsKQEAgLTU0Myw3ICs1NDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
aWYgKG1fcGVuZGluZ0xvYWRGbGFncyAmIFRleHRUcmFja1Jlc291cmNlKQotICAgICAgICBzY2hl
ZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3VyY2UpOworICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tz
KCk7CiAjZW5kaWYKIAogICAgIG1fcGVuZGluZ0xvYWRGbGFncyA9IDA7CkBAIC02ODIsNiArNjgz
LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgIC8vIGV2
ZW50IG1heSBoYXZlIGFscmVhZHkgZmlyZWQgYnkgdGhlbi4KICAgICBzZXRTaG91bGREZWxheUxv
YWRFdmVudCh0cnVlKTsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAvLyBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tzQXJlUmVhZHkgd2lsbCBuZWVkICIuLi4gdGhlIHRleHQgdHJh
Y2tzIHdob3NlIG1vZGUgd2FzIG5vdCBpbiB0aGUKKyAgICAvLyBkaXNhYmxlZCBzdGF0ZSB3aGVu
IHRoZSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBsYXN0IHN0YXJ0ZWQi
LgorICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmNsZWFyKCk7Cisg
ICAgaWYgKG1fdGV4dFRyYWNrcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBUZXh0VHJhY2sqIHRy
YWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOworICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2Rl
KCkgIT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKKyAgICAgICAgICAgICAgICBtX3RleHRUcmFja3NX
aGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5hcHBlbmQodHJhY2spOworICAgICAgICB9CisgICAg
fQorI2VuZGlmCisKICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiB9CiAKQEAgLTkyNSwx
NCArOTM5LDUyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFQKICAg
ICAvLyBkdXJpbmcgYSBtb25vdG9uaWMgdGltZSBpbmNyZWFzZS4KIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKQorYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdAogewotICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIC8vIFRoZSB0ZXh0IHRyYWNrcyBvZiBhIG1lZGlh
IGVsZW1lbnQgYXJlIHJlYWR5IGlmIGFsbCB0aGUgdGV4dCB0cmFja3Mgd2hvc2UgbW9kZSB3YXMg
bm90IAorICAgIC8vIGluIHRoZSBkaXNhYmxlZCBzdGF0ZSB3aGVuIHRoZSBlbGVtZW50J3MgcmVz
b3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBsYXN0IHN0YXJ0ZWQgbm93CisgICAgLy8gaGF2ZSBh
IHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRlIG9mIGxvYWRlZCBvciBmYWlsZWQgdG8gbG9hZC4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2Vs
ZWN0aW9uQmVnYW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuW2ldLT5yZWFkaW5lc3NTdGF0ZSgpID09IFRleHRUcmFjazo6
TG9hZGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChU
ZXh0VHJhY2sqKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hh
bmdlZChUZXh0VHJhY2sqIHRyYWNrKQogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50
LgorICAgIGlmIChtX3BsYXllciAmJiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25C
ZWdhbi5jb250YWlucyh0cmFjaykpIHsKKyAgICAgICAgaWYgKHRyYWNrLT5yZWFkaW5lc3NTdGF0
ZSgpICE9IFRleHRUcmFjazo6TG9hZGluZykKKyAgICAgICAgICAgIHNldFJlYWR5U3RhdGUobV9w
bGF5ZXItPnJlYWR5U3RhdGUoKSk7CisgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgLy8gNC44LjEw
LjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyAuLi4gd2hlbiBh
IHRleHQgdHJhY2sgY29ycmVzcG9uZGluZyB0byBhIHRyYWNrIGVsZW1lbnQgaXMgY3JlYXRlZCB3
aXRoIHRleHQgdHJhY2sKKyAgICAvLyBtb2RlIHNldCB0byBkaXNhYmxlZCBhbmQgc3Vic2VxdWVu
dGx5IGNoYW5nZXMgaXRzIHRleHQgdHJhY2sgbW9kZSB0byBoaWRkZW4sIHNob3dpbmcsCisgICAg
Ly8gb3Igc2hvd2luZyBieSBkZWZhdWx0IGZvciB0aGUgZmlyc3QgdGltZSwgdGhlIHVzZXIgYWdl
bnQgbXVzdCBpbW1lZGlhdGVseSBhbmQgc3luY2hyb25vdXNseQorICAgIC8vIHJ1biB0aGUgZm9s
bG93aW5nIGFsZ29yaXRobSAuLi4KKyAgICAKKyAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpICE9
IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSFRN
TFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50OworICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0
Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYg
KCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB0cmFja0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7
CisgICAgICAgIGlmICh0cmFja0VsZW1lbnQtPnRyYWNrKCkgIT0gdHJhY2spCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBNYXJrIHRoaXMgdHJhY2sgYXMgImNvbmZpZ3VyZWQi
IHNvIGNvbmZpZ3VyZVRleHRUcmFjayB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCisgICAg
ICAgIHRyYWNrRWxlbWVudC0+c2V0SGFzQmVlbkNvbmZpZ3VyZWQodHJ1ZSk7CisgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6RElTQUJMRUQgJiYgdHJhY2tFbGVtZW50LT5y
ZWFkeVN0YXRlKCkgPT0gSFRNTFRyYWNrRWxlbWVudDo6Tk9ORSkKKyAgICAgICAgICAgIHRyYWNr
RWxlbWVudC0+c2NoZWR1bGVMb2FkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqKQpAQCAt
MTIxNyw4ICsxMjY5LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShN
ZWQKICAgICBSZWFkeVN0YXRlIG9sZFN0YXRlID0gbV9yZWFkeVN0YXRlOwogICAgIG1fcmVhZHlT
dGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0YXRlKTsKIAorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICBib29sIHRyYWNrc0FyZVJlYWR5ID0gdGV4dFRyYWNrc0FyZVJlYWR5KCk7
CisKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IG9sZFN0YXRlICYmIG1fdHJhY2tzQXJlUmVhZHkg
PT0gdHJhY2tzQXJlUmVhZHkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJhY2tzQXJlUmVh
ZHkgPSB0cmFja3NBcmVSZWFkeTsKKyNlbHNlCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBvbGRT
dGF0ZSkKICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgdHJhY2tzQXJlUmVhZHkgPSB0cnVlOwor
I2VuZGlmCiAgICAgCiAgICAgaWYgKG9sZFN0YXRlID4gbV9yZWFkeVN0YXRlTWF4aW11bSkKICAg
ICAgICAgbV9yZWFkeVN0YXRlTWF4aW11bSA9IG9sZFN0YXRlOwpAQCAtMTI0Miw3ICsxMzA0LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBICYmIG9sZFN0YXRl
IDwgSEFWRV9NRVRBREFUQSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFU
QSAmJiBvbGRTdGF0ZSA8IEhBVkVfTUVUQURBVEEgJiYgdHJhY2tzQXJlUmVhZHkpIHsKICAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCk7CiAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQpOwogICAg
ICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQpAQCAtMTI1Myw3ICsxMzE1LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogCiAgICAgYm9vbCBzaG91bGRVcGRh
dGVEaXNwbGF5U3RhdGUgPSBmYWxzZTsKIAotICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9D
VVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSAmJiAhbV9oYXZlRmly
ZWRMb2FkZWREYXRhKSB7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFU
QSAmJiBvbGRTdGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBICYmICFtX2hhdmVGaXJlZExvYWRlZERh
dGEgJiYgdHJhY2tzQXJlUmVhZHkpIHsKICAgICAgICAgbV9oYXZlRmlyZWRMb2FkZWREYXRhID0g
dHJ1ZTsKICAgICAgICAgc2hvdWxkVXBkYXRlRGlzcGxheVN0YXRlID0gdHJ1ZTsKICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50KTsKQEAgLTEyNjEsMTQg
KzEzMjMsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAg
IH0KIAogICAgIGJvb2wgaXNQb3RlbnRpYWxseVBsYXlpbmcgPSBwb3RlbnRpYWxseVBsYXlpbmco
KTsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVfRlVUVVJFX0RBVEEgJiYgb2xkU3RhdGUg
PD0gSEFWRV9DVVJSRU5UX0RBVEEpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVfRlVU
VVJFX0RBVEEgJiYgb2xkU3RhdGUgPD0gSEFWRV9DVVJSRU5UX0RBVEEgJiYgdHJhY2tzQXJlUmVh
ZHkpIHsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuY2FucGxheUV2ZW50KTsK
ICAgICAgICAgaWYgKGlzUG90ZW50aWFsbHlQbGF5aW5nKQogICAgICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKICAgICAgICAgc2hvdWxkVXBkYXRlRGlz
cGxheVN0YXRlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEhBVkVf
RU5PVUdIX0RBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX0VOT1VHSF9EQVRBKSB7CisgICAgaWYgKG1f
cmVhZHlTdGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9FTk9VR0hf
REFUQSAmJiB0cmFja3NBcmVSZWFkeSkgewogICAgICAgICBpZiAob2xkU3RhdGUgPD0gSEFWRV9D
VVJSRU5UX0RBVEEpCiAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5jYW5w
bGF5RXZlbnQpOwogCkBAIC0yMTAyLDU4ICsyMTY0LDExIEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjoKICAgICAvLyBsb2FkZWQgc3RhdGUsIGl0cyB0ZXh0IHRyYWNr
IG1vZGUgdG8gdGhlIHRleHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBs
aXN0IG9mIGN1ZXMgdG8gYW4gZW1wdHkgbGlzdC4KICAgICAKICAgICAvLyA2LiBBZGQgdGhlIG5l
dyB0ZXh0IHRyYWNrIHRvIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4K
LSAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsKKyAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0
ZXh0VHJhY2spOwogCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFj
aykKLXsKLSAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7Ci0gICAgY29uZmlndXJlVGV4
dFRyYWNrcygpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFj
a3MoKQotewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gNC44LjEwLjEyLjMgU291cmNp
bmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKLSAgICAKLSAgICAvLyBXaGVuIGEgdGV4dCB0cmFj
ayBjb3JyZXNwb25kaW5nIHRvIGEgdHJhY2sgZWxlbWVudCBpcyBhZGRlZCB0byBhIG1lZGlhIGVs
ZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLAotICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3Qg
c2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYXBwcm9wcmlhdGVseSwgYXMgZGV0ZXJtaW5lZCBieSB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gICAgCi0gICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFj
ayBraW5kIGlzIHN1YnRpdGxlcyBvciBjYXB0aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGluZGljYXRl
ZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgYQotICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRy
YWNrIGtpbmQsIHRleHQgdHJhY2sgbGFuZ3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJs
ZWQsIGFuZCB0aGVyZSBpcyBubwotICAgIC8vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlh
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2Yg
ZWl0aGVyIHN1YnRpdGxlcwotICAgIC8vIG9yIGNhcHRpb25zIHdob3NlIHRleHQgdHJhY2sgbW9k
ZSBpcyBzaG93aW5nCi0gICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIGRlc2NyaXB0
aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgdGV4
dCAKLSAgICAvLyBkZXNjcmlwdGlvbnMgd2l0aCB0aGlzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgYW5k
IHRleHQgdHJhY2sgbGFiZWwgZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgCi0g
ICAgLy8gdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdp
dGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgZGVzY3JpcHRpb25zIHdob3NlIHRleHQgCi0gICAgLy8g
dHJhY2sgbW9kZSBpcyBzaG93aW5nCi0gICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUg
YmUgc2hvd2luZy4KLSAgICAvLyAgICBJZiB0aGVyZSBpcyBhIHRleHQgdHJhY2sgaW4gdGhlIG1l
ZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBp
cyBzaG93aW5nIAotICAgIC8vICAgIGJ5IGRlZmF1bHQsIHRoZSB1c2VyIGFnZW50IG11c3QgZnVy
dGhlcm1vcmUgY2hhbmdlIHRoYXQgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSB0byBoaWRk
ZW4uCi0gICAgCi0gICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIGNoYXB0ZXJzIGFu
ZCB0aGUgdGV4dCB0cmFjayBsYW5ndWFnZSBpcyBvbmUgdGhhdCB0aGUgdXNlciBhZ2VudCBoYXMg
cmVhc29uCi0gICAgLy8gdG8gYmVsaWV2ZSBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIHVzZXIsIGFu
ZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlz
dCBvZgotICAgIC8vIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRl
cnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcKLSAgICAvLyAgICBMZXQgdGhlIHRl
eHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nLgotICAgIAotICAgIC8vICogSWYgdGhlIHRyYWNrIGVs
ZW1lbnQgaGFzIGEgZGVmYXVsdCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8g
b3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEKLSAgICAvLyBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZyBvciBzaG93aW5nIGJ5
IGRlZmF1bHQKLSAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nIGJ5
IGRlZmF1bHQuCi0gICAgCi0gICAgLy8gT3RoZXJ3aXNlCi0gICAgLy8gICAgTGV0IHRoZSB0ZXh0
IHRyYWNrIG1vZGUgYmUgZGlzYWJsZWQuCi0gICAgCi0gICAgLy8gRklYTUUoNzExMjMpOiBVbnRp
bCB0aGUgYWJvdmUgbG9naWMgaGFzIGJlZW4gaW1wbGVtZW50ZWQsIGp1c3QgdGVsbCBhbGwgdGV4
dCB0cmFja3MgdG8gbG9hZC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1l
bnQqPihub2RlKS0+c2NoZWR1bGVMb2FkKCk7Ci0gICAgfQotfQotCiBUZXh0VHJhY2tMaXN0KiBI
VE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMjE2NSwxOCArMjE4MCwz
MSBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhCiAgICAgcmV0dXJu
IG1fdGV4dFRyYWNrcy5nZXQoKTsKIH0KIAorSFRNTFRyYWNrRWxlbWVudCogSFRNTE1lZGlhRWxl
bWVudDo6c2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCkgY29uc3QKK3sKKyAgICBIVE1MVHJhY2tFbGVtZW50KiBzaG93aW5nVHJhY2sgPSAwOwor
ICAgIAorICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHRyYWNrRWxlbWVudCA9PSBub2RlKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFj
a1RhZykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaG93aW5nVHJhY2sgPSBz
dGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIGlmIChzaG93aW5n
VHJhY2stPmtpbmQoKSA9PSB0cmFja0VsZW1lbnQtPmtpbmQoKSAmJiBzaG93aW5nVHJhY2stPnRy
YWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6OlNIT1dJTkcpCisgICAgICAgICAgICByZXR1cm4g
c2hvd2luZ1RyYWNrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVu
dCkKIHsKKyAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CisK
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAodHJhY2tF
bGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNr
RWxlbWVudC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQgLSAnc3JjJyBpcyAlcyIsIHVy
bEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIC8v
IDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCiAgICAgLy8gV2hl
biBhIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgZWxlbWVudCBjaGFuZ2VzIGFuZCB0aGUgbmV3IHBh
cmVudCBpcyBhIG1lZGlhIGVsZW1lbnQsIAogICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVz
dCBhZGQgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgdG8gdGhl
IApAQCAtMjE4NCwxMiArMjIxMiwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2Fz
QWRkZWQoSFRNCiAgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50
LT50cmFjaygpOwogICAgIGlmICghdGV4dFRyYWNrKQogICAgICAgICByZXR1cm47Ci0gICAgYWRk
VGV4dFRyYWNrKHRleHRUcmFjayk7ICAgIAorICAgIAorICAgIHRleHRUcmFja3MoKS0+YXBwZW5k
KHRleHRUcmFjayk7CisgICAgCiAgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFja1Jlc291cmNlKTsK
IH0KLSAKKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQoSFRNTFRy
YWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogeworICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhh
c1RhZ05hbWUodHJhY2tUYWcpKTsKKwogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjAwLDYg
KzIyMzIsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlCiAgICAg
fQogI2VuZGlmCiAKKyAgICB0cmFja0VsZW1lbnQtPnNldEhhc0JlZW5Db25maWd1cmVkKGZhbHNl
KTsKKwogICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJh
Y2soKTsKICAgICBpZiAoIXRleHRUcmFjaykKICAgICAgICAgcmV0dXJuOwpAQCAtMjIwOSw3ICsy
MjQzLDE0MiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlCiAgICAg
Ly8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNv
cnJlc3BvbmRpbmcgdGV4dCB0cmFjayBmcm9tIHRoZSAKICAgICAvLyBtZWRpYSBlbGVtZW50J3Mg
bGlzdCBvZiB0ZXh0IHRyYWNrcy4KICAgICBtX3RleHRUcmFja3MtPnJlbW92ZSh0ZXh0VHJhY2su
Z2V0KCkpOworICAgIHNpemVfdCBpbmRleCA9IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVj
dGlvbkJlZ2FuLmZpbmQodGV4dFRyYWNrLmdldCgpKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91
bmQpCisgICAgICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLnJlbW92
ZShpbmRleCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZElu
VGhpc0xhbmd1YWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGNoZWNr
IHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5jZSAtIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQxMjEKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tF
bGVtZW50KSBjb25zdAoreworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNr
RWxlbWVudC0+dHJhY2soKTsKKyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIGtpbmQgPSB0ZXh0VHJhY2stPmtpbmQoKTsKKyAgICBpZiAoIVRl
eHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGtpbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBo
YXZpbmcgYSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1
YWdlLCAuLi4gCisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KTsKKworICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpIHx8IGtp
bmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkgeworICAgICAgICBpZiAoIXNldHRp
bmdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoa2luZCA9PSBUZXh0
VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSAmJiAhc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0
aXRsZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGtpbmQgPT0g
VGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiAhc2V0dGluZ3MtPnNob3VsZERpc3BsYXlD
YXB0aW9ucygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdXNl
cklzSW50ZXJlc3RlZEluVGhpc0xhbmd1YWdlKHRyYWNrRWxlbWVudC0+c3JjbGFuZygpKTsKKyAg
ICB9CisKKyAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkg
eworICAgICAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHVzZXJJc0ludGVyZXN0ZWRJblRoaXNMYW5ndWFnZSh0cmFja0VsZW1lbnQtPnNyY2xhbmcoKSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKIH0KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpjb25maWd1cmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQor
eworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRy
YWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OmNvbmZpZ3VyZVRleHRUcmFjayAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwp
LnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gNC44LjEwLjEyLjMgU291
cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAKKyAgICAvLyBXaGVuIGEgdGV4dCB0
cmFjayBjb3JyZXNwb25kaW5nIHRvIGEgdHJhY2sgZWxlbWVudCBpcyBhZGRlZCB0byBhIG1lZGlh
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLAorICAgIC8vIHRoZSB1c2VyIGFnZW50IG11
c3Qgc2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYXBwcm9wcmlhdGVseSwgYXMgZGV0ZXJtaW5lZCBi
eSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRy
YWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOworICAgIGlmICghdGV4dFRyYWNrKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgVGV4dFRyYWNrOjpNb2RlIG1vZGUgPSBUZXh0VHJhY2s6OkhJ
RERFTjsKKyAgICBIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5n
ID0gc2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKHRyYWNrRWxlbWVudCk7CisgICAgU3RyaW5nIGtp
bmQgPSB0ZXh0VHJhY2stPmtpbmQoKTsKKyAgICBib29sIGhpZGVEZWZhdWx0VHJhY2sgPSBmYWxz
ZTsKKworICAgIGlmICh1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2sodHJhY2tFbGVtZW50KSkg
eworICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSB8fCBr
aW5kID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgIC8vICog
SWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBzdWJ0aXRsZXMgb3IgY2FwdGlvbnMgYW5kIHRoZSB1
c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIGEKKyAgICAgICAgICAgIC8v
IHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJhY2sgbGFuZ3VhZ2UsIGFu
ZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBubworICAgICAgICAgICAg
Ly8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0
cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBlaXRoZXIgc3VidGl0bGVzCisgICAgICAg
ICAgICAvLyBvciBjYXB0aW9ucyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAg
ICAgICAgICAgaGlkZURlZmF1bHRUcmFjayA9IHRyYWNrRWxlbWVudEN1cnJlbnRseVNob3dpbmcg
JiYgdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZy0+dHJhY2soKS0+c2hvd2luZ0J5RGVmYXVs
dCgpOworICAgICAgICAgICAgaWYgKCF0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nIHx8IGhp
ZGVEZWZhdWx0VHJhY2spIHsKKyAgICAgICAgICAgICAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJh
Y2sgbW9kZSBiZSBzaG93aW5nLgorICAgICAgICAgICAgICAgIC8vICAgIElmIHRoZXJlIGlzIGEg
dGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hv
c2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcgCisgICAgICAgICAgICAgICAgLy8gICAgYnkg
ZGVmYXVsdCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmdXJ0aGVybW9yZSBjaGFuZ2UgdGhhdCB0ZXh0
IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIHRvIGhpZGRlbi4KKyAgICAgICAgICAgICAgICBtb2Rl
ID0gVGV4dFRyYWNrOjpTSE9XSU5HOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KGtpbmQgPT0gVGV4dFRyYWNrOjpkZXNjcmlwdGlvbnNLZXl3b3JkKCkpIHsKKyAgICAgICAgICAg
IC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBkZXNjcmlwdGlvbnMgYW5kIHRoZSB1c2Vy
IGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIHRleHQgCisgICAgICAgICAgICAv
LyBkZXNjcmlwdGlvbnMgd2l0aCB0aGlzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgYW5kIHRleHQgdHJh
Y2sgbGFiZWwgZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgCisgICAgICAgICAg
ICAvLyB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0
aCBhIHRleHQgdHJhY2sga2luZCBvZiBkZXNjcmlwdGlvbnMgd2hvc2UgdGV4dCAKKyAgICAgICAg
ICAgIC8vIHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAgICAgICAgICAgaGlkZURlZmF1bHRUcmFj
ayA9IHRyYWNrRWxlbWVudEN1cnJlbnRseVNob3dpbmcgJiYgdHJhY2tFbGVtZW50Q3VycmVudGx5
U2hvd2luZy0+dHJhY2soKS0+c2hvd2luZ0J5RGVmYXVsdCgpOworICAgICAgICAgICAgaWYgKCF0
cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nIHx8IGhpZGVEZWZhdWx0VHJhY2spIHsKKyAgICAg
ICAgICAgICAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nLgorICAg
ICAgICAgICAgICAgIC8vICAgIElmIHRoZXJlIGlzIGEgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEg
ZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNo
b3dpbmcgCisgICAgICAgICAgICAgICAgLy8gICAgYnkgZGVmYXVsdCwgdGhlIHVzZXIgYWdlbnQg
bXVzdCBmdXJ0aGVybW9yZSBjaGFuZ2UgdGhhdCB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2Rl
IHRvIGhpZGRlbi4KKyAgICAgICAgICAgICAgICBtb2RlID0gVGV4dFRyYWNrOjpTSE9XSU5HOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpjaGFw
dGVyc0tleXdvcmQoKSkgeworICAgICAgICAgICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5k
IGlzIGNoYXB0ZXJzIGFuZCB0aGUgdGV4dCB0cmFjayBsYW5ndWFnZSBpcyBvbmUgdGhhdCB0aGUg
dXNlciBhZ2VudCBoYXMgcmVhc29uCisgICAgICAgICAgICAvLyB0byBiZWxpZXZlIGlzIGFwcHJv
cHJpYXRlIGZvciB0aGUgdXNlciwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4g
dGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mCisgICAgICAgICAgICAvLyB0ZXh0IHRyYWNrcyB3
aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGNoYXB0ZXJzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBp
cyBzaG93aW5nCisgICAgICAgICAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBz
aG93aW5nLgorICAgICAgICAgICAgaWYgKCF0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nKQor
ICAgICAgICAgICAgICAgIG1vZGUgPSBUZXh0VHJhY2s6OlNIT1dJTkc7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKCF0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nICYmIHRyYWNrRWxlbWVu
dC0+aXNEZWZhdWx0KCkpIHsKKyAgICAgICAgLy8gKiBJZiB0aGUgdHJhY2sgZWxlbWVudCBoYXMg
YSBkZWZhdWx0IGF0dHJpYnV0ZSBzcGVjaWZpZWQsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0
IHRyYWNrIGluIHRoZSBtZWRpYQorICAgICAgICAvLyBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRy
YWNrcyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZyBvciBzaG93aW5nIGJ5IGRlZmF1
bHQKKyAgICAgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZyBieSBk
ZWZhdWx0LgorICAgICAgICBtb2RlID0gVGV4dFRyYWNrOjpTSE9XSU5HOworICAgICAgICB0ZXh0
VHJhY2stPnNldFNob3dpbmdCeURlZmF1bHQoZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIE90aGVyd2lzZQorICAgICAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBk
aXNhYmxlZC4KKyAgICAgICAgbW9kZSA9IFRleHRUcmFjazo6RElTQUJMRUQ7CisgICAgfQorCisg
ICAgRXhjZXB0aW9uQ29kZSB1bnVzZWRFeGNlcHRpb247CisgICAgaWYgKGhpZGVEZWZhdWx0VHJh
Y2spIHsKKyAgICAgICAgdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZy0+dHJhY2soKS0+c2V0
TW9kZShUZXh0VHJhY2s6OkhJRERFTiwgdW51c2VkRXhjZXB0aW9uKTsKKyAgICAgICAgdHJhY2tF
bGVtZW50Q3VycmVudGx5U2hvd2luZy0+dHJhY2soKS0+c2V0U2hvd2luZ0J5RGVmYXVsdChmYWxz
ZSk7CisgICAgfQorCisgICAgdGV4dFRyYWNrLT5zZXRNb2RlKG1vZGUsIHVudXNlZEV4Y2VwdGlv
bik7Cit9CisgCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3MoKQor
eworICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFn
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBIVE1MVHJhY2tFbGVtZW50KiB0cmFj
a0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7CisgICAgICAg
IAorICAgICAgICAvLyBPbmx5IGNhbGwgY29uZmlndXJlVGV4dFRyYWNrIG9uY2UgcGVyIHRyYWNr
IHNvIHRoYXQgYWRkaW5nIGFub3RoZXIgdHJhY2sgYWZ0ZXIKKyAgICAgICAgLy8gdGhlIGluaXRp
YWwgY29uZmlndXJhdGlvbiBkb2Vzbid0IHJlY29uZmlndXJlIGV2ZXJ5IHRyYWNrLCBvbmx5IHRo
b3NlIHRoYXQgc2hvdWxkCisgICAgICAgIC8vIGJlIGNoYW5nZWQgYnkgdGhlIG5ldyBhZGRpdGlv
bi4gRm9yIGV4YW1wbGUgYWxsIG1ldGFkYXRhIHRyYWNrcyBhcmUgZGlzYWJsZWQgYnkgCisgICAg
ICAgIC8vIGRlZmF1bHQsIGFuZCB3ZSBkb24ndCB3YW50IGEgdHJhY2sgdGhhdCBoYXMgYmVlbiBl
bmFibGVkIGJ5IHNjcmlwdCB0byBiZSBkaXNhYmxlZAorICAgICAgICAvLyBhdXRvbWF0aWNhbGx5
IHdoZW4gYSBuZXcgdHJhY2sgZWxlbWVudCBpcyBhZGRlZCBsYXRlci4KKyAgICAgICAgaWYgKCF0
cmFja0VsZW1lbnQtPmhhc0JlZW5Db25maWd1cmVkKCkpCisgICAgICAgICAgICBjb25maWd1cmVU
ZXh0VHJhY2sodHJhY2tFbGVtZW50KTsKKyAgICB9Cit9CisKICNlbmRpZgogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NywxMCAr
MTk3LDEyIEBAIHB1YmxpYzoKIAogICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja3MoKTsKIAot
ICAgIHZvaWQgYWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7Ci0KICAgICB2aXJ0
dWFsIHZvaWQgdHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIHRyYWNrV2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50Kik7CisgICAgCisgICAgdm9p
ZCBjb25maWd1cmVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KTsKKyAg
ICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKKyAgICBib29sIHRleHRUcmFja3NBcmVSZWFk
eSgpIGNvbnN0OwogCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtMzg4LDggKzM5MCwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHZvaWQgY29uZmlndXJl
VGV4dFRyYWNrcygpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7
CisgICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CisgICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2soSFRNTFRyYWNrRWxl
bWVudCopIGNvbnN0OworICAgIEhUTUxUcmFja0VsZW1lbnQqIHNob3dpbmdUcmFja1dpdGhTYW1l
S2luZChIVE1MVHJhY2tFbGVtZW50KikgY29uc3Q7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlICJp
bnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25z
LgpAQCAtNTQyLDIxICs1NDYsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29tcGxldGVseUxv
YWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CiAKLSNpZiBFTkFC
TEUoV0VCX0FVRElPKQotICAgIC8vIFRoaXMgaXMgYSB3ZWFrIHJlZmVyZW5jZSwgc2luY2UgbV9h
dWRpb1NvdXJjZU5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdXMuCi0gICAgLy8gVGhlIHZhbHVl
IGlzIHNldCBqdXN0IGFmdGVyIHRoZSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgaXMgY3Jl
YXRlZC4KLSAgICAvLyBUaGUgdmFsdWUgaXMgY2xlYXJlZCBpbiBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU6On5NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoKS4KLSAgICBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUqIG1fYXVkaW9Tb3VyY2VOb2RlOwotI2VuZGlmCi0KICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgYm9vbCBtX3RyYWNrc0FyZVJlYWR5IDogMTsKICAgICBSZWZQ
dHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuOwogICAgIAogICAg
IHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlIDxkb3VibGUsIFRleHRUcmFja0N1ZSo+IEN1ZUludGVy
dmFsVHJlZTsKICAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVlOwogICAgIFZlY3RvcjxDdWVJ
bnRlcnZhbFRyZWU6OkludGVydmFsVHlwZT4gbV9jdXJyZW50bHlWaXNpYmxlQ3VlczsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICAvLyBUaGlzIGlzIGEgd2VhayByZWZlcmVu
Y2UsIHNpbmNlIG1fYXVkaW9Tb3VyY2VOb2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHVzLgorICAg
IC8vIFRoZSB2YWx1ZSBpcyBzZXQganVzdCBhZnRlciB0aGUgTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlIGlzIGNyZWF0ZWQuCisgICAgLy8gVGhlIHZhbHVlIGlzIGNsZWFyZWQgaW4gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjp+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCkuCisg
ICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKiBtX2F1ZGlvU291cmNlTm9kZTsKKyNlbmRp
ZgorCiAgICAgU3RyaW5nIG1fbWVkaWFHcm91cDsKICAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250
cm9sbGVyOwogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IG1fbWVkaWFDb250cm9sbGVyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2luZyhj
b25zdCBLVVJMJiAKICAgICAKIGlubGluZSBIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwgbV9oYXNCZWVuQ29uZmln
dXJlZChmYWxzZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJh
Y2tFbGVtZW50IC0gJXAiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0cmFja1RhZykp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJKHJldmlzaW9uIDEw
MjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw2ICs2OCw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdDsKIAorICAgIGJvb2wg
aGFzQmVlbkNvbmZpZ3VyZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0JlZW5Db25maWd1cmVkOyB9
CisgICAgdm9pZCBzZXRIYXNCZWVuQ29uZmlndXJlZChib29sIGZsYWcpIHsgbV9oYXNCZWVuQ29u
ZmlndXJlZCA9IGZsYWc7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxUcmFja0VsZW1l
bnQoKTsKQEAgLTk4LDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkxv
YWRVcmwoY29uc3QgS1VSTCYpOwogCiAgICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3Ry
YWNrOworICAgIGJvb2wgbV9oYXNCZWVuQ29uZmlndXJlZDsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDEwMjQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDExIEBAIFRl
eHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICAsIG1fbWVkaWFFbGVt
ZW50KDApCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkK
LSAgICAsIG1fbW9kZShUZXh0VHJhY2s6OkhJRERFTikKKyAgICAsIG1fbW9kZShUZXh0VHJhY2s6
OkRJU0FCTEVEKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlw
ZSkKICAgICAsIG1fcmVhZGluZXNzU3RhdGUoTm90TG9hZGVkKQorICAgICwgbV9zaG93aW5nQnlE
ZWZhdWx0KGZhbHNlKQogewogICAgIHNldEtpbmQoa2luZCk7CiB9CkBAIC0xMjUsMTIgKzEyNiwz
MSBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNpZ25lZCBzaG9ydCBtCiB7CiAgICAgLy8g
NC44LjEwLjEyLjUgT24gc2V0dGluZyB0aGUgbW9kZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBub3Qg
ZWl0aGVyIDAsIDEsIG9yIDIsCiAgICAgLy8gdGhlIHVzZXIgYWdlbnQgbXVzdCB0aHJvdyBhbiBJ
TlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uLgotICAgIGlmIChtb2RlID09IFRleHRUcmFjazo6
RElTQUJMRUQgfHwgbW9kZSA9PSBUZXh0VHJhY2s6OkhJRERFTiB8fCBtb2RlID09IFRleHRUcmFj
azo6U0hPV0lORykgewotICAgICAgICBtX21vZGUgPSBzdGF0aWNfY2FzdDxNb2RlPihtb2RlKTsK
LSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZQorICAgIGlmIChtb2RlID4gVGV4dFRyYWNrOjpT
SE9XSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fbW9kZSA9PSBzdGF0aWNfY2FzdDxNb2RlPihtb2RlKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyAyCisgICAgLy8g
IC4uLiBOb3RlOiBJZiB0aGUgbW9kZSBoYWQgYmVlbiBzaG93aW5nIGJ5IGRlZmF1bHQsIHRoaXMg
d2lsbCBjaGFuZ2UgaXQgdG8gc2hvd2luZywgCisgICAgLy8gZXZlbiB0aG91Z2ggdGhlIHZhbHVl
IG9mIG1vZGUgd291bGQgYXBwZWFyIG5vdCB0byBjaGFuZ2UuCisgICAgbV9tb2RlID0gc3RhdGlj
X2Nhc3Q8TW9kZT4obW9kZSk7CisgICAgaWYgKG1fbW9kZSA9PSBUZXh0VHJhY2s6OlNIT1dJTkcp
CisgICAgICAgIHNldFNob3dpbmdCeURlZmF1bHQoZmFsc2UpOworCisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7Cit9CisKK1Rl
eHRUcmFjazo6TW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAoreworICAgIC8vIFRoZSB0ZXh0
IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9kZXMgcmV0dXJuIFNI
T1dJTkcgKG51bWVyaWMgdmFsdWUgMikKKyAgICBpZiAobV9zaG93aW5nQnlEZWZhdWx0KQorICAg
ICAgICByZXR1cm4gU0hPV0lORzsKKyAgICByZXR1cm4gbV9tb2RlOwogfQogCiBUZXh0VHJhY2tD
dWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShy
ZXZpc2lvbiAxMDI0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw5ICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYW5ndWFn
ZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQogCiAg
ICAgZW51bSBNb2RlIHsgRElTQUJMRUQgPSAwLCBISURERU4gPSAxLCBTSE9XSU5HID0gMiB9Owot
ICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIE1vZGUgbW9kZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TW9kZSh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9uQ29kZSYp
OwogCisgICAgYm9vbCBzaG93aW5nQnlEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9zaG93aW5n
QnlEZWZhdWx0OyB9CisgICAgdm9pZCBzZXRTaG93aW5nQnlEZWZhdWx0KGJvb2wgc2hvd2luZykg
eyBtX3Nob3dpbmdCeURlZmF1bHQgPSBzaG93aW5nOyB9CisKICAgICBlbnVtIFJlYWRpbmVzc1N0
YXRlIHsgTm90TG9hZGVkID0gMCwgTG9hZGluZyA9IDEsIExvYWRlZCA9IDIsIEZhaWxlZFRvTG9h
ZCA9IDMgfTsKICAgICBSZWFkaW5lc3NTdGF0ZSByZWFkaW5lc3NTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhZGluZXNzU3RhdGU7IH0KICAgICB2b2lkIHNldFJlYWRpbmVzc1N0YXRlKFJlYWRp
bmVzc1N0YXRlIHN0YXRlKSB7IG1fcmVhZGluZXNzU3RhdGUgPSBzdGF0ZTsgfQpAQCAtMTE2LDYg
KzExOSw3IEBAIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBU
ZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNz
U3RhdGU7CisgICAgYm9vbCBtX3Nob3dpbmdCeURlZmF1bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCShyZXZpc2lv
biAxMDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMyArMTM5LDE3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRDdWVI
VE1MKFBhc3NSZWZQdHIKIAogYm9vbCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKIHsKLSAgICBy
ZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRy
YWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEOwogfQogCiB2b2lkIFRleHRUcmFj
a0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9pc0FjdGl2ZSA9IGFjdGl2
ZTsKIAorICAgIC8vIFdoZW4gYSBUZXh0VHJhY2sncyBtb2RlIGlzIGRpc2FibGVkOiBObyBjdWVz
IGFyZSBhY3RpdmUsIG5vIGV2ZW50cyBhcmUgZmlyZWQgLi4uCisgICAgaWYgKCF0cmFjaygpIHx8
IHRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6OkRJU0FCTEVEKQorICAgICAgICByZXR1cm47
CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYWN0aXZlKQogICAgICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIGZhbHNl
LCBmYWxzZSksIGVjKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjYyMCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTEyICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgdHJh
Y2tzIHNob3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5IGFjY29yZGluZyB0byB0aGVpciBraW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svY2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFj
ay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1tb2RlLW5vdC1jaGFu
Z2VkLWJ5LW5ldy10cmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1sOiBBZGRl
ZC4KKwogMjAxMS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUGFnZSBjYWNoZSBzaG91bGQgc3VwcG9ydCBwYWdlcyB3aXRoIHBsdWdpbnMuCkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stZGVmYXVs
dC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDggQEAKK1Rlc3RzIHRoYXQgYSB0cmFjayB3aXRoIHRoZSAnZGVmYXVsdCcg
YXR0cmlidXRlIGxvYWRzIGF1dG9tYXRpY2FsbHkuCisKK0VWRU5UKGxvYWQpCitFWFBFQ1RFRCAo
ZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInKSBPSworRVhQRUNURUQgKGV2ZW50LnRhcmdl
dC5pZCA9PSAnZGVmYXVsdCcpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWRlZmF1bHQtYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWRlZmF1bHQtYXR0cmli
dXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAgIHZhciB0aW1lciA9IG51bGw7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrTG9hZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGxvYWQpIik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQuTE9B
REVEKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRhcmdldC5pZCIsICJk
ZWZhdWx0Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAg
ICAgICAgIC8vIEVuZCB0aGUgdGVzdCBhZnRlciBhIGJyaWVmIHBhdXNlIHNvIHdlIGFsbG93IG90
aGVyIHRyYWNrcyB0byBsb2FkIGlmIHRoZXkgd2lsbC4KKyAgICAgICAgICAgICAgICBpZiAodGlt
ZXIpCisgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7CisgICAgICAgICAg
ICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBlbmRUZXN0KCkgfSwgMjAwKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHk+CisgICAgICAgIDxwPlRlc3RzIHRoYXQgYSB0cmFjayB3aXRoIHRoZSAnZGVmYXVsdCcgYXR0
cmlidXRlIGxvYWRzIGF1dG9tYXRpY2FsbHkuPC9wPgorICAgICAgICA8dmlkZW8+CisgICAgICAg
ICAgICA8dHJhY2sga2luZD0iY2FwdGlvbnMiIHNyYz0iY2FwdGlvbnMtd2VidnR0L3RjMDA1LWRl
ZmF1bHQtc3R5bGVzLnZ0dCIgb25sb2FkPSJ0cmFja0xvYWRlZCgpIj4KKyAgICAgICAgICAgIDx0
cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvdGMwMDUtbWV0YWRhdGEt
YXJlYS52dHQiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSI+CisgICAgICAgICAgICA8dHJhY2sgZGVm
YXVsdCBraW5kPSJjYXB0aW9ucyIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZp
bGUudnR0IiBvbmxvYWQ9InRyYWNrTG9hZGVkKCkiIGlkPSJkZWZhdWx0IiA+CisJICAgICAgPC92
aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFjay1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1i
eS1uZXctdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1uZXctdHJhY2stZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACitUZXN0cyB0aGF0IGEgdHJhY2sgYXBwZW5k
ZWQgYWZ0ZXIgdGhlIGluaXRpYWwgdHJhY2sgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBjaGFuZ2Ug
b3RoZXIgdHJhY2tzLgorCisKK0VWRU5UKGxvYWQpIC0tIDxib2R5PgorRVhQRUNURUQgKHRyYWNr
MS5yZWFkeVN0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh0cmFjazEudHJhY2subW9kZSA9PSAn
MCcpIE9LCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSA8dmlkZW8+CisqKmNoZWNrIGluaXRp
YWwgbWV0YWRhdGEgdHJhY2sgc3RhdGUKK0VYUEVDVEVEICh0cmFjazEucmVhZHlTdGF0ZSA9PSAn
MCcpIE9LCitFWFBFQ1RFRCAodHJhY2sxLnRyYWNrLm1vZGUgPT0gJzAnKSBPSworRVhQRUNURUQg
KHRyYWNrMS50cmFjay5jdWVzID09ICdudWxsJykgT0sKK1JVTih0cmFjazEudHJhY2subW9kZSA9
IFRleHRUcmFjay5ISURERU4pCisKK0VWRU5UKGxvYWQpIC0tIDx0cmFjayBraW5kPSdtZXRhZGF0
YScgPgorKipjaGVjayBtZXRhZGF0YSB0cmFjayBzdGF0ZQorRVhQRUNURUQgKHRyYWNrMS5yZWFk
eVN0YXRlID09ICcyJykgT0sKK0VYUEVDVEVEICh0cmFjazEudHJhY2subW9kZSA9PSAnMScpIE9L
CitFWFBFQ1RFRCAodHJhY2sxLnRyYWNrLmN1ZXMubGVuZ3RoID09ICcxMicpIE9LCitFWFBFQ1RF
RCAodHJhY2sxLnRyYWNrLmN1ZXNbMTFdLnN0YXJ0VGltZSA9PSAnMjInKSBPSworKiphZGQgYSBj
YXB0aW9uIHRyYWNrLCBjb25maWd1cmVkIHRvIGxvYWQgYXV0b21hdGljYWxseQorUlVOKHRyYWNr
MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJykpCitSVU4odHJhY2syLnNldEF0dHJp
YnV0ZSgna2luZCcsICdjYXB0aW9ucycpKQorUlVOKHRyYWNrMi5zZXRBdHRyaWJ1dGUoJ2RlZmF1
bHQnLCAnZGVmYXVsdCcpKQorUlVOKHRyYWNrMi5zZXRBdHRyaWJ1dGUoJ29ubG9hZCcsICdjYXB0
aW9uc1RyYWNrTG9hZGVkKCknKSkKK1JVTih0cmFjazIuc2V0QXR0cmlidXRlKCdzcmMnLCAnY2Fw
dGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCcpKQorUlVOKHZpZGVvLmFwcGVuZENo
aWxkKHRyYWNrMikpCisKK0VWRU5UKGxvYWQpIC0tIDx0cmFjayBraW5kPSdjYXB0aW9ucycgPgor
KipjaGVjayB0aGF0IG1ldGFkYXRhIHRyYWNrIHN0YXRlIGhhcyBub3QgY2hhbmdlZAorRVhQRUNU
RUQgKHRyYWNrMS5yZWFkeVN0YXRlID09ICcyJykgT0sKK0VYUEVDVEVEICh0cmFjazEudHJhY2su
bW9kZSA9PSAnMScpIE9LCisqKmFuZCB0aGF0IHRoZSBjYXB0aW9ucyB0cmFjayBzdGF0ZSBpcyBj
b3JyZWN0CitFWFBFQ1RFRCAodHJhY2syLnJlYWR5U3RhdGUgPT0gJzInKSBPSworRVhQRUNURUQg
KHRyYWNrMi50cmFjay5tb2RlID09ICcyJykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1uZXctdHJhY2su
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1tb2RlLW5v
dC1jaGFuZ2VkLWJ5LW5ldy10cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1uZXctdHJhY2suaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVk
aWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgZnVuY3Rpb24gY2Fw
dGlvbnNUcmFja0xvYWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJFVkVOVChsb2FkKSAtLSAmbHQ7dHJhY2sga2luZD0nY2FwdGlvbnMnICZndDsiKTsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxpPioqY2hlY2sgdGhhdCBtZXRhZGF0YSB0
cmFjayBzdGF0ZSBoYXMgbm90IGNoYW5nZWQ8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInRyYWNrMS5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5MT0FERUQp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2sxLnRyYWNrLm1vZGUiLCBUZXh0
VHJhY2suSElEREVOKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxpPioqYW5kIHRo
YXQgdGhlIGNhcHRpb25zIHRyYWNrIHN0YXRlIGlzIGNvcnJlY3Q8IiArICIvaT4iKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMi5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxl
bWVudC5MT0FERUQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2syLnRyYWNr
Lm1vZGUiLCBUZXh0VHJhY2suU0hPV0lORyk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhVHJhY2tMb2FkZWQoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQobG9hZCkgLS0gJmx0O3RyYWNrIGtpbmQ9
J21ldGFkYXRhJyAmZ3Q7Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNo
ZWNrIG1ldGFkYXRhIHRyYWNrIHN0YXRlPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ0cmFjazEucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQuTE9BREVEKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5tb2RlIiwgVGV4dFRy
YWNrLkhJRERFTik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEudHJhY2su
Y3Vlcy5sZW5ndGgiLCAxMik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEu
dHJhY2suY3Vlc1sxMV0uc3RhcnRUaW1lIiwgMjIpOworCisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCI8aT4qKmFkZCBhIGNhcHRpb24gdHJhY2ssIGNvbmZpZ3VyZWQgdG8gbG9hZCBhdXRv
bWF0aWNhbGx5PCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFjazIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFj
azIuc2V0QXR0cmlidXRlKCdraW5kJywgJ2NhcHRpb25zJykiKTsKKyAgICAgICAgICAgICAgICBy
dW4oInRyYWNrMi5zZXRBdHRyaWJ1dGUoJ2RlZmF1bHQnLCAnZGVmYXVsdCcpIik7CisgICAgICAg
ICAgICAgICAgcnVuKCJ0cmFjazIuc2V0QXR0cmlidXRlKCdvbmxvYWQnLCAnY2FwdGlvbnNUcmFj
a0xvYWRlZCgpJykiKTsKKyAgICAgICAgICAgICAgICBydW4oInRyYWNrMi5zZXRBdHRyaWJ1dGUo
J3NyYycsICdjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JykiKTsKKyAgICAg
ICAgICAgICAgICBydW4oInZpZGVvLmFwcGVuZENoaWxkKHRyYWNrMikiKTsKKworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSAmbHQ7dmlkZW8mZ3Q7Iik7Cisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoZWNrIGluaXRpYWwgbWV0YWRhdGEg
dHJhY2sgc3RhdGU8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRy
YWNrMS5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5OT05FKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5tb2RlIiwgVGV4dFRyYWNrLkRJU0FCTEVEKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5jdWVzIiwgbnVsbCk7
CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFjazEudHJhY2subW9kZSA9IFRleHRUcmFjay5ISURE
RU4iKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCI8YnI+RVZFTlQobG9hZCkgLS0gJmx0O2JvZHkmZ3Q7Iik7Cisg
ICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgICAgICAgICAgdHJh
Y2sxID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHJhY2snKVswXTsgCisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQu
Tk9ORSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEudHJhY2subW9kZSIs
IFRleHRUcmFjay5ESVNBQkxFRCk7CisKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5k
TWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L3Rlc3QiKTsKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0cyB0
aGF0IGEgdHJhY2sgYXBwZW5kZWQgYWZ0ZXIgdGhlIGluaXRpYWwgdHJhY2sgY29uZmlndXJhdGlv
biBkb2VzIG5vdCBjaGFuZ2Ugb3RoZXIgdHJhY2tzLjwvcD4KKyAgICAgICAgPHZpZGVvIG9uY2Fu
cGxheXRocm91Z2g9ImNhbnBsYXl0aHJvdWdoKCkiID4gCisgICAgICAgICAgICA8dHJhY2sga2lu
ZD0ibWV0YWRhdGEiIHNyYz0iY2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dCIgb25sb2FkPSJt
ZXRhZGF0YVRyYWNrTG9hZGVkKCkiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMt
bG9hZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stbW9kZS10cmlnZ2Vycy1sb2FkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3RzIHRoYXQgYSAn
bWV0YWRhdGEnIHRyYWNrIGRvZXMgbm90IGxvYWQgYXV0b21hdGljYWxseSwgYnV0IGRvZXMgbG9h
ZCB3aGVuIHRoZSBtb2RlIGlzIGNoYW5nZWQuCisKKworRVZFTlQobG9hZCkgLS0gPGJvZHk+Cisq
KmNoZWNrIGluaXRpYWwgbWV0YWRhdGEgdHJhY2sgc3RhdGUKK0VYUEVDVEVEICh0cmFjay5yZWFk
eVN0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPT0g
JzAnKSBPSworCitFVkVOVChjYW5wbGF5dGhyb3VnaCkgLS0gPHZpZGVvPgorKipjaGFuZ2UgbWV0
YWRhdGEgdHJhY2sgbW9kZSBzbyBpdCBsb2FkcworRVhQRUNURUQgKHRyYWNrLnJlYWR5U3RhdGUg
PT0gJzAnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9PSAnMCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzID09ICdudWxsJykgT0sKK1JVTih2
aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSBUZXh0VHJhY2suSElEREVOKQorCitFVkVOVChsb2Fk
KSAtLSA8dHJhY2s+CisqKmNoZWNrIG1ldGFkYXRhIHRyYWNrIHN0YXRlCitFWFBFQ1RFRCAodHJh
Y2sucmVhZHlTdGF0ZSA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2sudHJhY2subW9kZSA9PSAn
MScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0aCA9PSAnMTIn
KSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0uY3Vlc1sxMV0uc3RhcnRUaW1lID09
ICcyMicpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS10cmlnZ2Vycy1sb2Fk
aW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3Jp
cHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4u
L3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHRyYWNrTG9hZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkVWRU5UKGxvYWQpIC0tICZsdDt0cmFjayZndDsiKTsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIjxpPioqY2hlY2sgbWV0YWRhdGEgdHJhY2sgc3RhdGU8IiArICIv
aT4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrLnJlYWR5U3RhdGUiLCBI
VE1MVHJhY2tFbGVtZW50LkxPQURFRCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0
cmFjay50cmFjay5tb2RlIiwgVGV4dFRyYWNrLkhJRERFTik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmN1ZXMubGVuZ3RoIiwgMTIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzExXS5zdGFy
dFRpbWUiLCAyMik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSAmbHQ7dmlkZW8mZ3Q7Iik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoYW5nZSBtZXRhZGF0YSB0cmFjayBtb2RlIHNv
IGl0IGxvYWRzPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFj
ay5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5OT05FKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSIsIFRleHRUcmFjay5ESVNBQkxF
RCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmN1
ZXMiLCBudWxsKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnRleHRUcmFja3NbMF0ubW9k
ZSA9IFRleHRUcmFjay5ISURERU4iKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+RVZFTlQobG9hZCkgLS0g
Jmx0O2JvZHkmZ3Q7Iik7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoZWNrIGluaXRpYWwgbWV0YWRhdGEg
dHJhY2sgc3RhdGU8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0cmFjayA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyYWNrJylbMF07IAorICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHJhY2sucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQuTk9ORSk7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUiLCBUZXh0VHJh
Y2suRElTQUJMRUQpOworCisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmls
ZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBhICdt
ZXRhZGF0YScgdHJhY2sgZG9lcyBub3QgbG9hZCBhdXRvbWF0aWNhbGx5LCBidXQgZG9lcyBsb2Fk
IHdoZW4gdGhlIG1vZGUgaXMgY2hhbmdlZC48L3A+CisgICAgICAgIDx2aWRlbyBvbmNhbnBsYXl0
aHJvdWdoPSJjYW5wbGF5dGhyb3VnaCgpIiA+IAorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9Im1l
dGFkYXRhIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9tZXRhZGF0YS52dHQiIG9ubG9hZD0idHJhY2tM
b2FkZWQoKSI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbWV0YWRh
dGEudnR0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMt
d2VidnR0L21ldGFkYXRhLnZ0dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorV0VCVlRU
CisKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDEuMDAwCitMb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgCisKKzAwOjAwOjAyLjAwMCAtLT4gMDA6MDA6MDMuMDAwCitjb25zZWN0ZXR1ZXIgYWRp
cGlzY2luZyBlbGl0LCAKKworMDA6MDA6MDQuMDAwIC0tPiAwMDowMDowNS4wMDAKK3NlZCBkaWFt
IG5vbnVtbXkgbmliaCBldWlzbW9kIHRpbmNpZHVudCB1dCBsYW9yZWV0IGRvbG9yZSBtYWduYSBh
bGlxdWFtIGVyYXQgdm9sdXRwYXQuIAorCiswMDowMDowNi4wMDAgLS0+IDAwOjAwOjA3LjAwMAor
VXQgd2lzaSBlbmltIGFkIG1pbmltIHZlbmlhbSwgCisKKzAwOjAwOjA4LjAwMCAtLT4gMDA6MDA6
MDkuMDAwCitxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBs
b2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIAorCiswMDow
MDoxMC4wMDAgLS0+IDAwOjAwOjExLjAwMAorRHVpcyBhdXRlbSB2ZWwgZXVtIGlyaXVyZSBkb2xv
ciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0aWUgY29uc2VxdWF0
LCAKKworMDA6MDA6MTIuMDAwIC0tPiAwMDowMDoxMy4wMDAKK3ZlbCBpbGx1bSBkb2xvcmUgZXUg
ZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IGFjY3Vtc2FuIGV0IGl1c3Rv
IG9kaW8KKworMDA6MDA6MTQuMDAwIC0tPiAwMDowMDoxNS4wMDAKK2RpZ25pc3NpbSBxdWkgYmxh
bmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRl
IGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuCisKKzAwOjAwOjE2LjAwMCAtLT4gMDA6MDA6MTcuMDAw
CitOYW0gbGliZXIgdGVtcG9yIGN1bSBzb2x1dGEgbm9iaXMgZWxlaWZlbmQgb3B0aW9uIGNvbmd1
ZSBuaWhpbCBpbXBlcmRpZXQgZG9taW5nIGlkCisKKzAwOjAwOjE4LjAwMCAtLT4gMDA6MDA6MTku
MDAwCitxdW9kIG1hemltIHBsYWNlcmF0IGZhY2VyIHBvc3NpbSBhc3N1bS4gCisKKzAwOjAwOjIw
LjAwMCAtLT4gMDA6MDA6MjEuMDAwCitUeXBpIG5vbiBoYWJlbnQgY2xhcml0YXRlbSBpbnNpdGFt
OworCiswMDowMDoyMi4wMDAgLS0+IDAwOjAwOjIzLjAwMAorZXN0IHVzdXMgbGVnZW50aXMgaW4g
aWlzIHF1aSBmYWNpdCBlb3J1bSBjbGFyaXRhdGVtLgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119286</attachid>
            <date>2011-12-14 13:35:34 -0800</date>
            <delta_ts>2011-12-15 11:13:51 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_mode_12.txt</filename>
            <type>text/plain</type>
            <size>52255</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDExLTEyLTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgdHJhY2tzIHNo
b3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5IGFjY29yZGluZyB0byB0aGVpciBraW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90
cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAgICAgICBtZWRpYS90
cmFjay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFjay5odG1sCisgICAgICAgICAg
ICAgICBtZWRpYS90cmFjay90cmFjay1tb2RlLXRyaWdnZXJzLWxvYWRpbmcuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxB
dWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQpOiBBZGQgImNyZWF0ZWRCeVBhcnNlciIgcGFy
YW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKTogRGVhbCB3aXRoIGNvbnN0cnVjdG9yIGNoYW5nZS4KKyAgICAgICAgKiBodG1sL0hU
TUxBdWRpb0VsZW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTog
QWRkICJjcmVhdGVkQnlQYXJzZXIiIHBhcmFtZXRlci4gSW5pdGlhbGl6ZSBtX3BhcnNpbmdJblBy
b2dyZXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKTogQ2xlYXIgbV9wYXJzaW5nSW5Qcm9ncmVzcy4gU2NoZWR1bGUgdHJhY2sKKyAg
ICAgICAgICAgIGxvYWRpbmcgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpOiBDYWxsIGNvbmZpZ3VyZVRleHRUcmFja3Mgbm90
IGNhbGwgc2NoZWR1bGVMb2FkLCAKKyAgICAgICAgICAgIGl0IGp1c3Qgc2NoZWR1bGVzIHRoZSBs
b2FkIHRpbWVyIGFnYWluLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJl
cGFyZUZvckxvYWQpOiBBZGQgYWxsIG5vbi1kaXNhYmxlZCB0cmFjayBlbGVtZW50cyB0byBhIHZl
Y3RvcgorICAgICAgICAgICAgc28gd2UgY2FuIHByZXZlbnQgdGhlIG1lZGlhIGVsZW1lbnQncyBy
ZWFkeVN0YXRlIGZyb20gcmVhY2hpbmcgSEFWRV9NRVRBREFUQSB1bnRpbCB0aGUKKyAgICAgICAg
ICAgIHRyYWNrcyBhcmUgcmVhZHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzQXJlUmVhZHkpOiBOZXcuIFJldHVybiBmYWxzZSB1bmxlc3MgYWxsIHRyYWNr
cyB0aGF0IHdlcmUKKyAgICAgICAgICAgIG5vdCBkaXNhYmxlZCB3aGVuIGxvYWRpbmcgc3RhcnRl
ZCBoYXZlIGxvYWRlZCBvciBmYWlsZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZCk6IENhbGwgc2V0UmVhZHlTdGF0ZSB3aGVu
IGEgdHJhY2sgaXMKKyAgICAgICAgICAgIHN0b3BzIGxvYWRpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IFRyaWdnZXIgPHRyYWNr
PiBsb2FkaW5nIHdoZW4gdGhlIG1vZGUKKyAgICAgICAgICAgIGNoYW5nZXMgdG8gaGlkZGVuIG9y
IHNob3dpbmcgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6IERvIG5vdCBhZHZhbmNlIHRvIEhBVkVfTUVUQURBVEEg
b3IgaGlnaGVyIHdoaWxlCisgICAgICAgICAgICB0cmFjayBlbGVtZW50cyBhcmUgbG9hZGluZy4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogUmVtb3ZlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNob3dpbmdUcmFja1dpdGhTYW1l
S2luZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2Fz
QWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogRmxhZyBhIHRyYWNrIGFzIHVuY29uZmlndXJlZCBzbyBpdCB3aWxsIGJlCisgICAg
ICAgICAgICByZWNvbmZpZ3VyZWQgaWYgaXQgaXMgYWRkZWQgdG8gYW5vdGhlciBlbGVtZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhp
c0xhbmd1YWdlKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNl
cklzSW50ZXJlc3RlZEluVGhpc1RyYWNrKTogTmV3LiBDb25zaWRlciB1c2VyIHByZWZlcmVuY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNr
KTogTmV3LiBDb25maWd1cmUgYSB0cmFjayBhcyBwZXIgdGhlIHVzZXIncyBwcmVmZXJlbmNlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcuIENvbmZpZ3VyZSBhbGwgdHJhY2sgZWxlbWVudHMuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjogQWRkIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVk
QnlQYXJzZXIgdG8gYXVkaW8gYW5kIHZpZGVvLgorCisgICAgICAgICogaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFj
a0VsZW1lbnQpOiBJbml0aWFsaXplIG1faGFzQmVlbkNvbmZpZ3VyZWQuCisgICAgICAgICogaHRt
bC9IVE1MVHJhY2tFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpoYXNCZWVuQ29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpzZXRIYXNCZWVuQ29uZmlndXJlZCk6CisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6SFRNTFZpZGVvRWxl
bWVudCk6IEFkZCAiY3JlYXRlZEJ5UGFyc2VyIiBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogSW5pdGlhbGl6ZSBtX21vZGUgdG8gRElT
QUJMRUQsIG5vdCBISURERU4uIEluaXRpYWxpemUgbV9zaG93aW5nQnlEZWZhdWx0LgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRNb2RlKTogQ2xlYXIgdGhlICJzaG93aW5nIGJ5IGRl
ZmF1bHQiIGZsYWcgd2hlbiBhIHRyYWNrJ3MgbW9kZSBpcworICAgICAgICAgICAgZXhwbGljaXRs
eSBzZXQgdG8gU0hPV0lORy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6bW9kZSk6IFJl
dHVybiBTSE9XSU5HIHdoZW5ldmVyIHRoZSAic2hvd2luZyBieSBkZWZhdWx0IiBmbGFnIGlzIHNl
dC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpzaG93aW5nQnlEZWZhdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
U2hvd2luZ0J5RGVmYXVsdCk6CisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKTogUmV0dXJuIGZhbHNlIGlm
IGEgY3VlIGhhcyBubyB0cmFjaywgb3IgaWYgaXRzIHRyYWNrIGlzIGRpc2FibGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZSk6IERvbid0IGVuYWJsZSBhIGN1
ZSBpZiBpdCBoYXMgbm8gdHJhY2ssIG9yIGlmIGl0cyB0cmFjaworICAgICAgICAgICAgaXMgZGlz
YWJsZWQuCisKIDIwMTEtMTItMTQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQnJvYWRlbiBzdXBwb3J0IGZvciBtdXRhdGlvbiBvYnNlcnZhdGlvbiBvZiBhdHRy
aWJ1dGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxB
dWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQotICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK0hUTUxBdWRp
b0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKKyAgICA6IEhUTUxNZWRp
YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShhdWRpb1RhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1l
bnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxB
dWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5
UGFyc2VyKSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgc3JjKQogewotICAgIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBhdWRpbyA9IGFkb3B0
UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KGF1ZGlvVGFnLCBkb2N1bWVudCkpOworICAgIFJlZlB0
cjxIVE1MQXVkaW9FbGVtZW50PiBhdWRpbyA9IGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50
KGF1ZGlvVGFnLCBkb2N1bWVudCwgZmFsc2UpKTsKICAgICBhdWRpby0+c2V0UHJlbG9hZCgiYXV0
byIpOwogICAgIGlmICghc3JjLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1ZGlvLT5zZXRTcmMoc3Jj
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCShyZXZpc2lvbiAx
MDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgSFRNTEF1
ZGlvRWxlbWVudCA6IHB1YmxpYyBIVE1MTWVkaWFFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wpOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9j
dW1lbnQqLCBjb25zdCBTdHJpbmcmIHNyYyk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gaXNQbGF5aW5nKCkgfHwgSFRNTE1lZGlhRWxlbWVu
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7IH0KQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2ZU5vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgSFRNTEF1ZGlvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKKyAgICBIVE1MQXVkaW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIGJvb2wpOwogCiAgICAgdmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gMTAyODAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHJl
bW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAKICAgICAgICAgbWFwLmFkZChkb2N1bWVudCwgc2V0
KTsKIH0KIAotSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitIVE1MTWVkaWFFbGVtZW50OjpI
VE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKICAgICAsIEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCwgdGhpcykKICAgICAs
IG1fbG9hZFRpbWVyKHRoaXMsICZIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCkKQEAg
LTIyOCwxMiArMjI4LDE0IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29u
c3QKICAgICAsIG1fbG9hZEluaXRpYXRlZEJ5VXNlckdlc3R1cmUoZmFsc2UpCiAgICAgLCBtX2Nv
bXBsZXRlbHlMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVQcmVwYXJlZFRvUGxheShmYWxzZSkK
LSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICwgbV9hdWRpb1NvdXJjZU5vZGUoMCkKLSNlbmRp
ZgorICAgICwgbV9wYXJzaW5nSW5Qcm9ncmVzcyhjcmVhdGVkQnlQYXJzZXIpCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgICwgbV90cmFja3NBcmVSZWFkeSh0cnVlKQogICAgICwgbV90ZXh0
VHJhY2tzKDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgICwgbV9hdWRpb1Nv
dXJjZU5vZGUoMCkKKyNlbmRpZgogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQiKTsKICAgICBkb2N1bWVudC0+cmVnaXN0ZXJGb3JEb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja3ModGhpcyk7CkBAIC0zOTgsNiArNDAwLDI5IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpCit7CisgICAgSFRNTEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpOworICAgIG1fcGFyc2luZ0luUHJvZ3Jlc3MgPSBmYWxzZTsKKworI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKKyAgICBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CisjZW5kaWYKKyAgICAKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChO
b2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKKyAgICAgICAg
ICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJjZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC01NDMsNyArNTY4LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBUZXh0VHJhY2tSZXNvdXJjZSkK
LSAgICAgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFja1Jlc291cmNlKTsKKyAgICAgICAgY29uZmln
dXJlVGV4dFRyYWNrcygpOwogI2VuZGlmCiAKICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgPSAwOwpA
QCAtNjgyLDYgKzcwNywxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2Fk
KCkKICAgICAvLyBldmVudCBtYXkgaGF2ZSBhbHJlYWR5IGZpcmVkIGJ5IHRoZW4uCiAgICAgc2V0
U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgLy8gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc0FyZVJlYWR5IHdpbGwgbmVlZCAiLi4u
IHRoZSB0ZXh0IHRyYWNrcyB3aG9zZSBtb2RlIHdhcyBub3QgaW4gdGhlCisgICAgLy8gZGlzYWJs
ZWQgc3RhdGUgd2hlbiB0aGUgZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0g
bGFzdCBzdGFydGVkIi4KKyAgICBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdh
bi5jbGVhcigpOworICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAg
VGV4dFRyYWNrKiB0cmFjayA9IG1fdGV4dFRyYWNrcy0+aXRlbShpKTsKKyAgICAgICAgICAgIGlm
ICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAgICAgICAgICAgICAg
bV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4uYXBwZW5kKHRyYWNrKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwog
fQogCkBAIC05MjUsMTQgKzk2Myw1MiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFj
dGl2ZVRleHRUCiAgICAgLy8gZHVyaW5nIGEgbW9ub3RvbmljIHRpbWUgaW5jcmVhc2UuCiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRy
YWNrKikKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc0FyZVJlYWR5KCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICAvLyBUaGUgdGV4dCB0cmFj
a3Mgb2YgYSBtZWRpYSBlbGVtZW50IGFyZSByZWFkeSBpZiBhbGwgdGhlIHRleHQgdHJhY2tzIHdo
b3NlIG1vZGUgd2FzIG5vdCAKKyAgICAvLyBpbiB0aGUgZGlzYWJsZWQgc3RhdGUgd2hlbiB0aGUg
ZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0gbGFzdCBzdGFydGVkIG5vdwor
ICAgIC8vIGhhdmUgYSB0ZXh0IHRyYWNrIHJlYWRpbmVzcyBzdGF0ZSBvZiBsb2FkZWQgb3IgZmFp
bGVkIHRvIGxvYWQuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrc1do
ZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3Rl
eHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbltpXS0+cmVhZGluZXNzU3RhdGUoKSA9
PSBUZXh0VHJhY2s6OkxvYWRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TW9kZUNoYW5nZWQoVGV4dFRyYWNrKikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
UmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKIHsKLSAgICAvLyBGSVhNRSg2Mjg4
NSk6IEltcGxlbWVudC4KKyAgICBpZiAobV9wbGF5ZXIgJiYgbV90ZXh0VHJhY2tzV2hlblJlc291
cmNlU2VsZWN0aW9uQmVnYW4uY29udGFpbnModHJhY2spKSB7CisgICAgICAgIGlmICh0cmFjay0+
cmVhZGluZXNzU3RhdGUoKSAhPSBUZXh0VHJhY2s6OkxvYWRpbmcpCisgICAgICAgICAgICBzZXRS
ZWFkeVN0YXRlKG1fcGxheWVyLT5yZWFkeVN0YXRlKCkpOworICAgIH0KK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQorewor
ICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAg
Ly8gLi4uIHdoZW4gYSB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gYSB0cmFjayBlbGVtZW50
IGlzIGNyZWF0ZWQgd2l0aCB0ZXh0IHRyYWNrCisgICAgLy8gbW9kZSBzZXQgdG8gZGlzYWJsZWQg
YW5kIHN1YnNlcXVlbnRseSBjaGFuZ2VzIGl0cyB0ZXh0IHRyYWNrIG1vZGUgdG8gaGlkZGVuLCBz
aG93aW5nLAorICAgIC8vIG9yIHNob3dpbmcgYnkgZGVmYXVsdCBmb3IgdGhlIGZpcnN0IHRpbWUs
IHRoZSB1c2VyIGFnZW50IG11c3QgaW1tZWRpYXRlbHkgYW5kIHN5bmNocm9ub3VzbHkKKyAgICAv
LyBydW4gdGhlIGZvbGxvd2luZyBhbGdvcml0aG0gLi4uCisgICAgCisgICAgaWYgKHRyYWNrLT50
cmFja1R5cGUoKSAhPSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudDsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxl
bWVudCo+KG5vZGUpOworICAgICAgICBpZiAodHJhY2tFbGVtZW50LT50cmFjaygpICE9IHRyYWNr
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gTWFyayB0aGlzIHRyYWNrIGFz
ICJjb25maWd1cmVkIiBzbyBjb25maWd1cmVUZXh0VHJhY2sgd29uJ3QgY2hhbmdlIHRoZSBtb2Rl
IGFnYWluLgorICAgICAgICB0cmFja0VsZW1lbnQtPnNldEhhc0JlZW5Db25maWd1cmVkKHRydWUp
OworICAgICAgICBpZiAodHJhY2stPm1vZGUoKSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEICYmIHRy
YWNrRWxlbWVudC0+cmVhZHlTdGF0ZSgpID09IEhUTUxUcmFja0VsZW1lbnQ6Ok5PTkUpCisgICAg
ICAgICAgICB0cmFja0VsZW1lbnQtPnNjaGVkdWxlTG9hZCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4
dFRyYWNrKikKQEAgLTEyMTcsOCArMTI5MywxOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFJlYWR5U3RhdGUoTWVkCiAgICAgUmVhZHlTdGF0ZSBvbGRTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsK
ICAgICBtX3JlYWR5U3RhdGUgPSBzdGF0aWNfY2FzdDxSZWFkeVN0YXRlPihzdGF0ZSk7CiAKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCB0cmFja3NBcmVSZWFkeSA9IHRleHRUcmFj
a3NBcmVSZWFkeSgpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBvbGRTdGF0ZSAmJiBtX3Ry
YWNrc0FyZVJlYWR5ID09IHRyYWNrc0FyZVJlYWR5KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3RyYWNrc0FyZVJlYWR5ID0gdHJhY2tzQXJlUmVhZHk7CisjZWxzZQogICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gb2xkU3RhdGUpCiAgICAgICAgIHJldHVybjsKKyAgICBib29sIHRyYWNrc0FyZVJl
YWR5ID0gdHJ1ZTsKKyNlbmRpZgogICAgIAogICAgIGlmIChvbGRTdGF0ZSA+IG1fcmVhZHlTdGF0
ZU1heGltdW0pCiAgICAgICAgIG1fcmVhZHlTdGF0ZU1heGltdW0gPSBvbGRTdGF0ZTsKQEAgLTEy
NDIsNyArMTMyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFU
QSAmJiBvbGRTdGF0ZSA8IEhBVkVfTUVUQURBVEEpIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlID49
IEhBVkVfTUVUQURBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX01FVEFEQVRBICYmIHRyYWNrc0FyZVJl
YWR5KSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdl
RXZlbnQpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0
YUV2ZW50KTsKICAgICAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKQEAgLTEyNTMsNyArMTMz
OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQKIAogICAgIGJv
b2wgc2hvdWxkVXBkYXRlRGlzcGxheVN0YXRlID0gZmFsc2U7CiAKLSAgICBpZiAobV9yZWFkeVN0
YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9DVVJSRU5UX0RBVEEg
JiYgIW1faGF2ZUZpcmVkTG9hZGVkRGF0YSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPj0gSEFW
RV9DVVJSRU5UX0RBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSAmJiAhbV9oYXZl
RmlyZWRMb2FkZWREYXRhICYmIHRyYWNrc0FyZVJlYWR5KSB7CiAgICAgICAgIG1faGF2ZUZpcmVk
TG9hZGVkRGF0YSA9IHRydWU7CiAgICAgICAgIHNob3VsZFVwZGF0ZURpc3BsYXlTdGF0ZSA9IHRy
dWU7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmxvYWRlZGRhdGFFdmVudCk7
CkBAIC0xMjYxLDE0ICsxMzQ3LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlT
dGF0ZShNZWQKICAgICB9CiAKICAgICBib29sIGlzUG90ZW50aWFsbHlQbGF5aW5nID0gcG90ZW50
aWFsbHlQbGF5aW5nKCk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRB
ICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKSB7CisgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBICYm
IHRyYWNrc0FyZVJlYWR5KSB7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmNh
bnBsYXlFdmVudCk7CiAgICAgICAgIGlmIChpc1BvdGVudGlhbGx5UGxheWluZykKICAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAgICAgICAgIHNo
b3VsZFVwZGF0ZURpc3BsYXlTdGF0ZSA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBIQVZFX0VOT1VHSF9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9FTk9VR0hfREFUQSkg
eworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFWRV9FTk9VR0hfREFUQSAmJiBvbGRTdGF0ZSA8
IEhBVkVfRU5PVUdIX0RBVEEgJiYgdHJhY2tzQXJlUmVhZHkpIHsKICAgICAgICAgaWYgKG9sZFN0
YXRlIDw9IEhBVkVfQ1VSUkVOVF9EQVRBKQogICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkuY2FucGxheUV2ZW50KTsKIApAQCAtMjEwMiw1OCArMjE4OCwxMSBAQCBQYXNzUmVm
UHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6CiAgICAgLy8gbG9hZGVkIHN0YXRlLCBp
dHMgdGV4dCB0cmFjayBtb2RlIHRvIHRoZSB0ZXh0IHRyYWNrIGhpZGRlbiBtb2RlLCBhbmQgaXRz
IHRleHQgdHJhY2sgbGlzdCBvZiBjdWVzIHRvIGFuIGVtcHR5IGxpc3QuCiAgICAgCiAgICAgLy8g
Ni4gQWRkIHRoZSBuZXcgdGV4dCB0cmFjayB0byB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2Yg
dGV4dCB0cmFja3MuCi0gICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjayk7CisgICAgdGV4dFRyYWNr
cygpLT5hcHBlbmQodGV4dFRyYWNrKTsKIAogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gdHJhY2spCi17Ci0gICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOwotICAg
IGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tzKCkKLXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDQuOC4x
MC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCi0gICAgCi0gICAgLy8gV2hl
biBhIHRleHQgdHJhY2sgY29ycmVzcG9uZGluZyB0byBhIHRyYWNrIGVsZW1lbnQgaXMgYWRkZWQg
dG8gYSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcywKLSAgICAvLyB0aGUgdXNl
ciBhZ2VudCBtdXN0IHNldCB0aGUgdGV4dCB0cmFjayBtb2RlIGFwcHJvcHJpYXRlbHksIGFzIGRl
dGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICAgIAotICAgIC8vICogSWYg
dGhlIHRleHQgdHJhY2sga2luZCBpcyBzdWJ0aXRsZXMgb3IgY2FwdGlvbnMgYW5kIHRoZSB1c2Vy
IGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIGEKLSAgICAvLyB0cmFjayB3aXRo
IHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCBhbmQgdGV4dCB0cmFj
ayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUgaXMgbm8KLSAgICAvLyBvdGhlciB0ZXh0IHRyYWNr
IGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0
cmFjayBraW5kIG9mIGVpdGhlciBzdWJ0aXRsZXMKLSAgICAvLyBvciBjYXB0aW9ucyB3aG9zZSB0
ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZwotICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2lu
ZCBpcyBkZXNjcmlwdGlvbnMgYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3Qg
aW4gaGF2aW5nIHRleHQgCi0gICAgLy8gZGVzY3JpcHRpb25zIHdpdGggdGhpcyB0ZXh0IHRyYWNr
IGxhbmd1YWdlIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBubyBv
dGhlciB0ZXh0IAotICAgIC8vIHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGRlc2NyaXB0aW9ucyB3aG9zZSB0
ZXh0IAotICAgIC8vIHRyYWNrIG1vZGUgaXMgc2hvd2luZwotICAgIC8vICAgIExldCB0aGUgdGV4
dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCi0gICAgLy8gICAgSWYgdGhlcmUgaXMgYSB0ZXh0IHRy
YWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aG9zZSB0ZXh0
IHRyYWNrIG1vZGUgaXMgc2hvd2luZyAKLSAgICAvLyAgICBieSBkZWZhdWx0LCB0aGUgdXNlciBh
Z2VudCBtdXN0IGZ1cnRoZXJtb3JlIGNoYW5nZSB0aGF0IHRleHQgdHJhY2sncyB0ZXh0IHRyYWNr
IG1vZGUgdG8gaGlkZGVuLgotICAgIAotICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBp
cyBjaGFwdGVycyBhbmQgdGhlIHRleHQgdHJhY2sgbGFuZ3VhZ2UgaXMgb25lIHRoYXQgdGhlIHVz
ZXIgYWdlbnQgaGFzIHJlYXNvbgotICAgIC8vIHRvIGJlbGlldmUgaXMgYXBwcm9wcmlhdGUgZm9y
IHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEg
ZWxlbWVudCdzIGxpc3Qgb2YKLSAgICAvLyB0ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0cmFjayBr
aW5kIG9mIGNoYXB0ZXJzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nCi0gICAgLy8g
ICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KLSAgICAKLSAgICAvLyAqIElm
IHRoZSB0cmFjayBlbGVtZW50IGhhcyBhIGRlZmF1bHQgYXR0cmlidXRlIHNwZWNpZmllZCwgYW5k
IHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhCi0gICAgLy8gZWxlbWVu
dCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcg
b3Igc2hvd2luZyBieSBkZWZhdWx0Ci0gICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUg
YmUgc2hvd2luZyBieSBkZWZhdWx0LgotICAgIAotICAgIC8vIE90aGVyd2lzZQotICAgIC8vICAg
IExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIGRpc2FibGVkLgotICAgIAotICAgIC8vIEZJWE1F
KDcxMTIzKTogVW50aWwgdGhlIGFib3ZlIGxvZ2ljIGhhcyBiZWVuIGltcGxlbWVudGVkLCBqdXN0
IHRlbGwgYWxsIHRleHQgdHJhY2tzIHRvIGxvYWQuCi0gICAgZm9yIChOb2RlKiBub2RlID0gZmly
c3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxI
VE1MVHJhY2tFbGVtZW50Kj4obm9kZSktPnNjaGVkdWxlTG9hZCgpOwotICAgIH0KLX0KLQogVGV4
dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIAogewogICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTIx
NjUsMTggKzIyMDQsMzEgQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YQogICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7CiB9CiAKK0hUTUxUcmFja0VsZW1lbnQq
IEhUTUxNZWRpYUVsZW1lbnQ6OnNob3dpbmdUcmFja1dpdGhTYW1lS2luZChIVE1MVHJhY2tFbGVt
ZW50KiB0cmFja0VsZW1lbnQpIGNvbnN0Cit7CisgICAgSFRNTFRyYWNrRWxlbWVudCogc2hvd2lu
Z1RyYWNrID0gMDsKKyAgICAKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICh0cmFja0VsZW1l
bnQgPT0gbm9kZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIW5vZGUtPmhh
c1RhZ05hbWUodHJhY2tUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2hv
d2luZ1RyYWNrID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpOworICAgICAg
ICBpZiAoc2hvd2luZ1RyYWNrLT5raW5kKCkgPT0gdHJhY2tFbGVtZW50LT5raW5kKCkgJiYgc2hv
d2luZ1RyYWNrLT50cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpTSE9XSU5HKQorICAgICAg
ICAgICAgcmV0dXJuIHNob3dpbmdUcmFjazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50
KiB0cmFja0VsZW1lbnQpCiB7CisgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0
cmFja1RhZykpOworCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgaWYgKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VS
TCB1cmwgPSB0cmFja0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwot
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkIC0gJ3Ny
YycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQotI2Vu
ZGlmCi0KICAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNr
cwogICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBh
bmQgdGhlIG5ldyBwYXJlbnQgaXMgYSBtZWRpYSBlbGVtZW50LCAKICAgICAvLyB0aGVuIHRoZSB1
c2VyIGFnZW50IG11c3QgYWRkIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0
IHRyYWNrIHRvIHRoZSAKQEAgLTIxODQsMTIgKzIyMzYsMTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0cmFja1dhc0FkZGVkKEhUTQogICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9
IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKICAgICBpZiAoIXRleHRUcmFjaykKICAgICAgICAgcmV0
dXJuOwotICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOyAgICAKLSAgICBzY2hlZHVsZUxvYWQo
VGV4dFRyYWNrUmVzb3VyY2UpOworICAgIAorICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRleHRU
cmFjayk7CisgICAgCisgICAgLy8gRG8gbm90IHNjaGVkdWxlIHRoZSB0cmFjayBsb2FkaW5nIHVu
dGlsIHBhcnNpbmcgZmluaXNoZXMgc28gd2UgZG9uJ3Qgc3RhcnQgYmVmb3JlIGFsbCB0cmFja3MK
KyAgICAvLyBpbiB0aGUgbWFya3VwIGhhdmUgYmVlbiBhZGRlZC4KKyAgICBpZiAoIW1fcGFyc2lu
Z0luUHJvZ3Jlc3MpCisgICAgICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJjZSk7CiB9
Ci0gCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFj
a0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKKyAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNU
YWdOYW1lKHRyYWNrVGFnKSk7CisKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIwMCw2ICsy
MjU5LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZQogICAgIH0K
ICNlbmRpZgogCisgICAgdHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChmYWxzZSk7
CisKICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0VsZW1lbnQtPnRyYWNr
KCk7CiAgICAgaWYgKCF0ZXh0VHJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTIyMDksNyArMjI3
MCwxNDIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZQogICAgIC8v
IHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1vdmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3Jy
ZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUgCiAgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxp
c3Qgb2YgdGV4dCB0cmFja3MuCiAgICAgbV90ZXh0VHJhY2tzLT5yZW1vdmUodGV4dFRyYWNrLmdl
dCgpKTsKKyAgICBzaXplX3QgaW5kZXggPSBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rp
b25CZWdhbi5maW5kKHRleHRUcmFjay5nZXQoKSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5k
KQorICAgICAgICBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5yZW1vdmUo
aW5kZXgpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJblRo
aXNMYW5ndWFnZShjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBjaGVjayB0
aGUgdXNlcidzIGxhbmd1YWdlIHByZWZlcmVuY2UgLSBidWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0MTIxCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCkgY29uc3QKK3sKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0Vs
ZW1lbnQtPnRyYWNrKCk7CisgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFN0cmluZyBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CisgICAgaWYgKCFUZXh0
VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChraW5kKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gSWYgLi4uIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2
aW5nIGEgdHJhY2sgd2l0aCB0aGlzIHRleHQgdHJhY2sga2luZCwgdGV4dCB0cmFjayBsYW5ndWFn
ZSwgLi4uIAorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7
CisKKyAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSB8fCBraW5k
ID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpIHsKKyAgICAgICAgaWYgKCFzZXR0aW5n
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgJiYgIXNldHRpbmdzLT5zaG91bGREaXNwbGF5U3VidGl0
bGVzKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChraW5kID09IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYgIXNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2Fw
dGlvbnMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHVzZXJJ
c0ludGVyZXN0ZWRJblRoaXNMYW5ndWFnZSh0cmFja0VsZW1lbnQtPnNyY2xhbmcoKSk7CisgICAg
fQorCisgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpkZXNjcmlwdGlvbnNLZXl3b3JkKCkpIHsK
KyAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPnNob3VsZERpc3BsYXlUZXh0RGVz
Y3JpcHRpb25zKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB1
c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UodHJhY2tFbGVtZW50LT5zcmNsYW5nKCkpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y29uZmlndXJlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKK3sK
KyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFj
a1RhZykpIHsKKyAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1lbnQtPmdldE5vbkVtcHR5VVJM
QXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojpjb25maWd1cmVUZXh0VHJhY2sgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51
dGY4KCkuZGF0YSgpKTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJj
aW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgCisgICAgLy8gV2hlbiBhIHRleHQgdHJh
Y2sgY29ycmVzcG9uZGluZyB0byBhIHRyYWNrIGVsZW1lbnQgaXMgYWRkZWQgdG8gYSBtZWRpYSBl
bGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcywKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0
IHNldCB0aGUgdGV4dCB0cmFjayBtb2RlIGFwcHJvcHJpYXRlbHksIGFzIGRldGVybWluZWQgYnkg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
ayA9IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKKyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIFRleHRUcmFjazo6TW9kZSBtb2RlID0gVGV4dFRyYWNrOjpISURE
RU47CisgICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZyA9
IHNob3dpbmdUcmFja1dpdGhTYW1lS2luZCh0cmFja0VsZW1lbnQpOworICAgIFN0cmluZyBraW5k
ID0gdGV4dFRyYWNrLT5raW5kKCk7CisgICAgYm9vbCBoaWRlRGVmYXVsdFRyYWNrID0gZmFsc2U7
CisKKyAgICBpZiAodXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrKHRyYWNrRWxlbWVudCkpIHsK
KyAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgfHwga2lu
ZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKSB7CisgICAgICAgICAgICAvLyAqIElm
IHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgc3VidGl0bGVzIG9yIGNhcHRpb25zIGFuZCB0aGUgdXNl
ciBoYXMgaW5kaWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmluZyBhCisgICAgICAgICAgICAvLyB0
cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCBhbmQg
dGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgIC8v
IG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJh
Y2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgZWl0aGVyIHN1YnRpdGxlcworICAgICAgICAg
ICAgLy8gb3IgY2FwdGlvbnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAg
ICAgICAgIGhpZGVEZWZhdWx0VHJhY2sgPSB0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nICYm
IHRyYWNrRWxlbWVudEN1cnJlbnRseVNob3dpbmctPnRyYWNrKCktPnNob3dpbmdCeURlZmF1bHQo
KTsKKyAgICAgICAgICAgIGlmICghdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZyB8fCBoaWRl
RGVmYXVsdFRyYWNrKSB7CisgICAgICAgICAgICAgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNr
IG1vZGUgYmUgc2hvd2luZy4KKyAgICAgICAgICAgICAgICAvLyAgICBJZiB0aGVyZSBpcyBhIHRl
eHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdob3Nl
IHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nIAorICAgICAgICAgICAgICAgIC8vICAgIGJ5IGRl
ZmF1bHQsIHRoZSB1c2VyIGFnZW50IG11c3QgZnVydGhlcm1vcmUgY2hhbmdlIHRoYXQgdGV4dCB0
cmFjaydzIHRleHQgdHJhY2sgbW9kZSB0byBoaWRkZW4uCisgICAgICAgICAgICAgICAgbW9kZSA9
IFRleHRUcmFjazo6U0hPV0lORzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChr
aW5kID09IFRleHRUcmFjazo6ZGVzY3JpcHRpb25zS2V5d29yZCgpKSB7CisgICAgICAgICAgICAv
LyAqIElmIHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgZGVzY3JpcHRpb25zIGFuZCB0aGUgdXNlciBo
YXMgaW5kaWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmluZyB0ZXh0IAorICAgICAgICAgICAgLy8g
ZGVzY3JpcHRpb25zIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGxhbmd1YWdlIGFuZCB0ZXh0IHRyYWNr
IGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IAorICAgICAgICAgICAg
Ly8gdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdpdGgg
YSB0ZXh0IHRyYWNrIGtpbmQgb2YgZGVzY3JpcHRpb25zIHdob3NlIHRleHQgCisgICAgICAgICAg
ICAvLyB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAgICAgICAgIGhpZGVEZWZhdWx0VHJhY2sg
PSB0cmFja0VsZW1lbnRDdXJyZW50bHlTaG93aW5nICYmIHRyYWNrRWxlbWVudEN1cnJlbnRseVNo
b3dpbmctPnRyYWNrKCktPnNob3dpbmdCeURlZmF1bHQoKTsKKyAgICAgICAgICAgIGlmICghdHJh
Y2tFbGVtZW50Q3VycmVudGx5U2hvd2luZyB8fCBoaWRlRGVmYXVsdFRyYWNrKSB7CisgICAgICAg
ICAgICAgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KKyAgICAg
ICAgICAgICAgICAvLyAgICBJZiB0aGVyZSBpcyBhIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVs
ZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93
aW5nIAorICAgICAgICAgICAgICAgIC8vICAgIGJ5IGRlZmF1bHQsIHRoZSB1c2VyIGFnZW50IG11
c3QgZnVydGhlcm1vcmUgY2hhbmdlIHRoYXQgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSB0
byBoaWRkZW4uCisgICAgICAgICAgICAgICAgbW9kZSA9IFRleHRUcmFjazo6U0hPV0lORzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFRleHRUcmFjazo6Y2hhcHRl
cnNLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBp
cyBjaGFwdGVycyBhbmQgdGhlIHRleHQgdHJhY2sgbGFuZ3VhZ2UgaXMgb25lIHRoYXQgdGhlIHVz
ZXIgYWdlbnQgaGFzIHJlYXNvbgorICAgICAgICAgICAgLy8gdG8gYmVsaWV2ZSBpcyBhcHByb3By
aWF0ZSBmb3IgdGhlIHVzZXIsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRo
ZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZgorICAgICAgICAgICAgLy8gdGV4dCB0cmFja3Mgd2l0
aCBhIHRleHQgdHJhY2sga2luZCBvZiBjaGFwdGVycyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMg
c2hvd2luZworICAgICAgICAgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hv
d2luZy4KKyAgICAgICAgICAgIGlmICghdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZykKKyAg
ICAgICAgICAgICAgICBtb2RlID0gVGV4dFRyYWNrOjpTSE9XSU5HOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmICghdHJhY2tFbGVtZW50Q3VycmVudGx5U2hvd2luZyAmJiB0cmFja0VsZW1lbnQt
PmlzRGVmYXVsdCgpKSB7CisgICAgICAgIC8vICogSWYgdGhlIHRyYWNrIGVsZW1lbnQgaGFzIGEg
ZGVmYXVsdCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0
cmFjayBpbiB0aGUgbWVkaWEKKyAgICAgICAgLy8gZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFj
a3Mgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcgb3Igc2hvd2luZyBieSBkZWZhdWx0
CisgICAgICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcgYnkgZGVm
YXVsdC4KKyAgICAgICAgbW9kZSA9IFRleHRUcmFjazo6U0hPV0lORzsKKyAgICAgICAgdGV4dFRy
YWNrLT5zZXRTaG93aW5nQnlEZWZhdWx0KGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBPdGhlcndpc2UKKyAgICAgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgZGlz
YWJsZWQuCisgICAgICAgIG1vZGUgPSBUZXh0VHJhY2s6OkRJU0FCTEVEOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgdW51c2VkRXhjZXB0aW9uOworICAgIGlmIChoaWRlRGVmYXVsdFRyYWNr
KSB7CisgICAgICAgIHRyYWNrRWxlbWVudEN1cnJlbnRseVNob3dpbmctPnRyYWNrKCktPnNldE1v
ZGUoVGV4dFRyYWNrOjpISURERU4sIHVudXNlZEV4Y2VwdGlvbik7CisgICAgICAgIHRyYWNrRWxl
bWVudEN1cnJlbnRseVNob3dpbmctPnRyYWNrKCktPnNldFNob3dpbmdCeURlZmF1bHQoZmFsc2Up
OworICAgIH0KKworICAgIHRleHRUcmFjay0+c2V0TW9kZShtb2RlLCB1bnVzZWRFeGNlcHRpb24p
OworfQorIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKK3sK
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpOworICAgICAgICAK
KyAgICAgICAgLy8gT25seSBjYWxsIGNvbmZpZ3VyZVRleHRUcmFjayBvbmNlIHBlciB0cmFjayBz
byB0aGF0IGFkZGluZyBhbm90aGVyIHRyYWNrIGFmdGVyCisgICAgICAgIC8vIHRoZSBpbml0aWFs
IGNvbmZpZ3VyYXRpb24gZG9lc24ndCByZWNvbmZpZ3VyZSBldmVyeSB0cmFjaywgb25seSB0aG9z
ZSB0aGF0IHNob3VsZAorICAgICAgICAvLyBiZSBjaGFuZ2VkIGJ5IHRoZSBuZXcgYWRkaXRpb24u
IEZvciBleGFtcGxlIGFsbCBtZXRhZGF0YSB0cmFja3MgYXJlIGRpc2FibGVkIGJ5IAorICAgICAg
ICAvLyBkZWZhdWx0LCBhbmQgd2UgZG9uJ3Qgd2FudCBhIHRyYWNrIHRoYXQgaGFzIGJlZW4gZW5h
YmxlZCBieSBzY3JpcHQgdG8gYmUgZGlzYWJsZWQKKyAgICAgICAgLy8gYXV0b21hdGljYWxseSB3
aGVuIGEgbmV3IHRyYWNrIGVsZW1lbnQgaXMgYWRkZWQgbGF0ZXIuCisgICAgICAgIGlmICghdHJh
Y2tFbGVtZW50LT5oYXNCZWVuQ29uZmlndXJlZCgpKQorICAgICAgICAgICAgY29uZmlndXJlVGV4
dFRyYWNrKHRyYWNrRWxlbWVudCk7CisgICAgfQorfQorCiAjZW5kaWYKIAogYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjpoYXZlUG90ZW50aWFsU291cmNlQ2hpbGQoKQpAQCAtMzAwMiwxMyArMzE5OCw2
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXIKICAgICB9CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKLXsKLSAgICBI
VE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgZG9jdW1lbnQoKS0+dXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKLX0KLQog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5KCkKIHsKICAgICBl
bnN1cmVNZWRpYVBsYXllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMTAgKzE5NywxMiBAQCBwdWJsaWM6CiAK
ICAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tzKCk7CiAKLSAgICB2b2lkIGFkZFRleHRUcmFj
ayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwotCiAgICAgdmlydHVhbCB2b2lkIHRyYWNrV2FzQWRk
ZWQoSFRNTFRyYWNrRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCB0cmFja1dpbGxCZVJlbW92
ZWQoSFRNTFRyYWNrRWxlbWVudCopOworICAgIAorICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKKyAg
ICBib29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogCiAgICAgLy8gVGV4dFRyYWNrQ2xp
ZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFj
ayopOwpAQCAtMjE4LDcgKzIyMCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGl2ZXJOb3RpZmlj
YXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAg
ICB2b2lkIHNldE1lZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwog
ICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYg
bmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKICAg
ICB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbik7CiAjZW5kaWYKQEAgLTI2
NiwxMCArMjY3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRyb2xsZXIoUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xsZXI+KTsKIAogcHJvdGVjdGVkOgotICAgIEhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgSFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sKTsKICAgICB2aXJ0dWFsIH5IVE1M
TWVkaWFFbGVtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKQEAgLTM4OCw4ICszOTAsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsK
ICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQpOworICAgIGJvb2wgdXNl
cklzSW50ZXJlc3RlZEluVGhpc0xhbmd1YWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGJv
b2wgdXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsK
KyAgICBIVE1MVHJhY2tFbGVtZW50KiBzaG93aW5nVHJhY2tXaXRoU2FtZUtpbmQoSFRNTFRyYWNr
RWxlbWVudCopIGNvbnN0OwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0
aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KQEAgLTU0MSwyMiAr
NTQ1LDI1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJl
IDogMTsKICAgICBib29sIG1fY29tcGxldGVseUxvYWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQ
cmVwYXJlZFRvUGxheSA6IDE7Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIC8vIFRoaXMg
aXMgYSB3ZWFrIHJlZmVyZW5jZSwgc2luY2UgbV9hdWRpb1NvdXJjZU5vZGUgaG9sZHMgYSByZWZl
cmVuY2UgdG8gdXMuCi0gICAgLy8gVGhlIHZhbHVlIGlzIHNldCBqdXN0IGFmdGVyIHRoZSBNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgaXMgY3JlYXRlZC4KLSAgICAvLyBUaGUgdmFsdWUgaXMg
Y2xlYXJlZCBpbiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6On5NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUoKS4KLSAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUqIG1fYXVkaW9T
b3VyY2VOb2RlOwotI2VuZGlmCisgICAgYm9vbCBtX3BhcnNpbmdJblByb2dyZXNzIDogMTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29sIG1fdHJhY2tzQXJlUmVhZHkgOiAxOwog
ICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgVmVjdG9yPFJlZlB0
cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW47CiAg
ICAgCiAgICAgdHlwZWRlZiBQT0RJbnRlcnZhbFRyZWUgPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4g
Q3VlSW50ZXJ2YWxUcmVlOwogICAgIEN1ZUludGVydmFsVHJlZSBtX2N1ZVRyZWU7CiAgICAgVmVj
dG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlPiBtX2N1cnJlbnRseVZpc2libGVDdWVz
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIC8vIFRoaXMgaXMgYSB3ZWFr
IHJlZmVyZW5jZSwgc2luY2UgbV9hdWRpb1NvdXJjZU5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8g
dXMuCisgICAgLy8gVGhlIHZhbHVlIGlzIHNldCBqdXN0IGFmdGVyIHRoZSBNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUgaXMgY3JlYXRlZC4KKyAgICAvLyBUaGUgdmFsdWUgaXMgY2xlYXJlZCBp
biBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6On5NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUoKS4KKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUqIG1fYXVkaW9Tb3VyY2VOb2Rl
OworI2VuZGlmCisKICAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOwogICAgIGZyaWVuZCBjbGFzcyBN
ZWRpYUNvbnRyb2xsZXI7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRy
b2xsZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgkocmV2aXNpb24gMTAy
NDU4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTExLDcgKzExLDcgQEAgYXBwbGV0CiBhcmVhCiBhcnRpY2xlIGludGVyZmFjZU5hbWU9
SFRNTEVsZW1lbnQKIGFzaWRlIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLWF1ZGlvIHdyYXBw
ZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25hbD1WSURFTworYXVkaW8gd3JhcHBl
ck9ubHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRpdGlvbmFsPVZJREVPLCBjb25zdHJ1Y3Rvck5l
ZWRzQ3JlYXRlZEJ5UGFyc2VyCiBiIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGJhc2UKIGJh
c2Vmb250IGludGVyZmFjZU5hbWU9SFRNTEJhc2VGb250RWxlbWVudApAQCAtMTI5LDcgKzEyOSw3
IEBAIHR0IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHUgaW50ZXJmYWNlTmFtZT1IVE1MRWxl
bWVudAogdWwgaW50ZXJmYWNlTmFtZT1IVE1MVUxpc3RFbGVtZW50CiB2YXIgaW50ZXJmYWNlTmFt
ZT1IVE1MRWxlbWVudAotdmlkZW8gd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRp
dGlvbmFsPVZJREVPCit2aWRlbyB3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZSwgY29uZGl0
aW9uYWw9VklERU8sIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIHdiciBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50CiB4bXAgaW50ZXJmYWNlTmFtZT1IVE1MUHJlRWxlbWVudAogbm9z
Y3JpcHQgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3
IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2luZyhjb25zdCBLVVJMJiAKICAgICAKIGlubGlu
ZSBIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQorICAgICwgbV9oYXNCZWVuQ29uZmlndXJlZChmYWxzZSkKIHsKICAgICBMT0co
TWVkaWEsICJIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tFbGVtZW50IC0gJXAiLCB0aGlzKTsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0cmFja1RhZykpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmgJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw5IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFFbGVtZW50Q3Jvc3NPcmln
aW5BdHRyaWJ1dGUoKSBjb25zdDsKIAorICAgIGJvb2wgaGFzQmVlbkNvbmZpZ3VyZWQoKSBjb25z
dCB7IHJldHVybiBtX2hhc0JlZW5Db25maWd1cmVkOyB9CisgICAgdm9pZCBzZXRIYXNCZWVuQ29u
ZmlndXJlZChib29sIGZsYWcpIHsgbV9oYXNCZWVuQ29uZmlndXJlZCA9IGZsYWc7IH0KKwogcHJp
dmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogICAgIHZpcnR1YWwgfkhUTUxUcmFja0VsZW1lbnQoKTsKQEAgLTk4LDYgKzEwMSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoY29uc3QgS1VSTCYpOwogCiAg
ICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3RyYWNrOworICAgIGJvb2wgbV9oYXNCZWVu
Q29uZmlndXJlZDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotaW5saW5lIEhU
TUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKK2lubGluZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCisgICAgOiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
cmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodmlkZW9UYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1Jl
ZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBib29sIEhUTUxWaWRl
b0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQpIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlz
aW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIAog
Y2xhc3MgSFRNTFZpZGVvRWxlbWVudCA6IHB1YmxpYyBIVE1MTWVkaWFFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZp
ZGVvRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wp
OwogCiAgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBoZWlnaHQoKSBj
b25zdDsKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzcGxheVBv
c3RlckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlz
cGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAogcHJpdmF0ZToKLSAgICBI
VE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIEhU
TUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYpOwogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDEwMjQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDExIEBAIFRl
eHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICAsIG1fbWVkaWFFbGVt
ZW50KDApCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkK
LSAgICAsIG1fbW9kZShUZXh0VHJhY2s6OkhJRERFTikKKyAgICAsIG1fbW9kZShUZXh0VHJhY2s6
OkRJU0FCTEVEKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlw
ZSkKICAgICAsIG1fcmVhZGluZXNzU3RhdGUoTm90TG9hZGVkKQorICAgICwgbV9zaG93aW5nQnlE
ZWZhdWx0KGZhbHNlKQogewogICAgIHNldEtpbmQoa2luZCk7CiB9CkBAIC0xMjUsMTIgKzEyNiwz
MSBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNpZ25lZCBzaG9ydCBtCiB7CiAgICAgLy8g
NC44LjEwLjEyLjUgT24gc2V0dGluZyB0aGUgbW9kZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBub3Qg
ZWl0aGVyIDAsIDEsIG9yIDIsCiAgICAgLy8gdGhlIHVzZXIgYWdlbnQgbXVzdCB0aHJvdyBhbiBJ
TlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uLgotICAgIGlmIChtb2RlID09IFRleHRUcmFjazo6
RElTQUJMRUQgfHwgbW9kZSA9PSBUZXh0VHJhY2s6OkhJRERFTiB8fCBtb2RlID09IFRleHRUcmFj
azo6U0hPV0lORykgewotICAgICAgICBtX21vZGUgPSBzdGF0aWNfY2FzdDxNb2RlPihtb2RlKTsK
LSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKHRoaXMpOwotICAgIH0gZWxzZQorICAgIGlmIChtb2RlID4gVGV4dFRyYWNrOjpT
SE9XSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fbW9kZSA9PSBzdGF0aWNfY2FzdDxNb2RlPihtb2RlKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIG5ldyB2YWx1ZSBpcyAyCisgICAgLy8g
IC4uLiBOb3RlOiBJZiB0aGUgbW9kZSBoYWQgYmVlbiBzaG93aW5nIGJ5IGRlZmF1bHQsIHRoaXMg
d2lsbCBjaGFuZ2UgaXQgdG8gc2hvd2luZywgCisgICAgLy8gZXZlbiB0aG91Z2ggdGhlIHZhbHVl
IG9mIG1vZGUgd291bGQgYXBwZWFyIG5vdCB0byBjaGFuZ2UuCisgICAgbV9tb2RlID0gc3RhdGlj
X2Nhc3Q8TW9kZT4obW9kZSk7CisgICAgaWYgKG1fbW9kZSA9PSBUZXh0VHJhY2s6OlNIT1dJTkcp
CisgICAgICAgIHNldFNob3dpbmdCeURlZmF1bHQoZmFsc2UpOworCisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7Cit9CisKK1Rl
eHRUcmFjazo6TW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAoreworICAgIC8vIFRoZSB0ZXh0
IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9kZXMgcmV0dXJuIFNI
T1dJTkcgKG51bWVyaWMgdmFsdWUgMikKKyAgICBpZiAobV9zaG93aW5nQnlEZWZhdWx0KQorICAg
ICAgICByZXR1cm4gU0hPV0lORzsKKyAgICByZXR1cm4gbV9tb2RlOwogfQogCiBUZXh0VHJhY2tD
dWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShy
ZXZpc2lvbiAxMDI0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw5ICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYW5ndWFn
ZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQogCiAg
ICAgZW51bSBNb2RlIHsgRElTQUJMRUQgPSAwLCBISURERU4gPSAxLCBTSE9XSU5HID0gMiB9Owot
ICAgIE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQorICAgIE1vZGUgbW9kZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TW9kZSh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9uQ29kZSYp
OwogCisgICAgYm9vbCBzaG93aW5nQnlEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9zaG93aW5n
QnlEZWZhdWx0OyB9CisgICAgdm9pZCBzZXRTaG93aW5nQnlEZWZhdWx0KGJvb2wgc2hvd2luZykg
eyBtX3Nob3dpbmdCeURlZmF1bHQgPSBzaG93aW5nOyB9CisKICAgICBlbnVtIFJlYWRpbmVzc1N0
YXRlIHsgTm90TG9hZGVkID0gMCwgTG9hZGluZyA9IDEsIExvYWRlZCA9IDIsIEZhaWxlZFRvTG9h
ZCA9IDMgfTsKICAgICBSZWFkaW5lc3NTdGF0ZSByZWFkaW5lc3NTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhZGluZXNzU3RhdGU7IH0KICAgICB2b2lkIHNldFJlYWRpbmVzc1N0YXRlKFJlYWRp
bmVzc1N0YXRlIHN0YXRlKSB7IG1fcmVhZGluZXNzU3RhdGUgPSBzdGF0ZTsgfQpAQCAtMTE2LDYg
KzExOSw3IEBAIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBU
ZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNz
U3RhdGU7CisgICAgYm9vbCBtX3Nob3dpbmdCeURlZmF1bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCShyZXZpc2lv
biAxMDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMyArMTM5LDE3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRDdWVI
VE1MKFBhc3NSZWZQdHIKIAogYm9vbCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKIHsKLSAgICBy
ZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRy
YWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEOwogfQogCiB2b2lkIFRleHRUcmFj
a0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9pc0FjdGl2ZSA9IGFjdGl2
ZTsKIAorICAgIC8vIFdoZW4gYSBUZXh0VHJhY2sncyBtb2RlIGlzIGRpc2FibGVkOiBObyBjdWVz
IGFyZSBhY3RpdmUsIG5vIGV2ZW50cyBhcmUgZmlyZWQgLi4uCisgICAgaWYgKCF0cmFjaygpIHx8
IHRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6OkRJU0FCTEVEKQorICAgICAgICByZXR1cm47
CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoYWN0aXZlKQogICAgICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIGZhbHNl
LCBmYWxzZSksIGVjKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjgxNCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTE0ICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgdHJh
Y2tzIHNob3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5IGFjY29yZGluZyB0byB0aGVpciBraW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svY2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS90cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFj
ay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLW1vZGUt
bm90LWNoYW5nZWQtYnktbmV3LXRyYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1sOiBBZGRl
ZC4KKwogMjAxMS0xMi0xNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBCcm9hZGVuIHN1cHBvcnQgZm9yIG11dGF0aW9uIG9ic2VydmF0aW9uIG9mIGF0dHJpYnV0
ZXMKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWRlZmF1bHQtYXR0cmlidXRl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay1kZWZhdWx0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGVzdHMgdGhhdCBhIHRyYWNrIHdpdGggdGhlICdk
ZWZhdWx0JyBhdHRyaWJ1dGUgbG9hZHMgYXV0b21hdGljYWxseS4KKworRVZFTlQobG9hZCkKK0VY
UEVDVEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicpIE9LCitFWFBFQ1RFRCAoZXZl
bnQudGFyZ2V0LmlkID09ICdkZWZhdWx0JykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stZGVmYXVsdC1hdHRyaWJ1dGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1kZWZhdWx0LWF0dHJpYnV0ZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stZGVmYXVs
dC1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgdmFyIHRpbWVyID0gbnVs
bDsKKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tMb2FkZWQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQobG9hZCkiKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxl
bWVudC5MT0FERUQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0
LmlkIiwgImRlZmF1bHQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisg
ICAgICAgICAgICAgICAgLy8gRW5kIHRoZSB0ZXN0IGFmdGVyIGEgYnJpZWYgcGF1c2Ugc28gd2Ug
YWxsb3cgb3RoZXIgdHJhY2tzIHRvIGxvYWQgaWYgdGhleSB3aWxsLgorICAgICAgICAgICAgICAg
IGlmICh0aW1lcikKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKKyAg
ICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGVuZFRlc3QoKSB9
LCAyMDApOworICAgICAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBhIHRyYWNrIHdpdGggdGhlICdkZWZh
dWx0JyBhdHRyaWJ1dGUgbG9hZHMgYXV0b21hdGljYWxseS48L3A+CisgICAgICAgIDx2aWRlbz4K
KyAgICAgICAgICAgIDx0cmFjayBraW5kPSJjYXB0aW9ucyIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQv
dGMwMDUtZGVmYXVsdC1zdHlsZXMudnR0IiBvbmxvYWQ9InRyYWNrTG9hZGVkKCkiPgorICAgICAg
ICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC90YzAwNS1t
ZXRhZGF0YS1hcmVhLnZ0dCIgb25sb2FkPSJ0cmFja0xvYWRlZCgpIj4KKyAgICAgICAgICAgIDx0
cmFjayBkZWZhdWx0IGtpbmQ9ImNhcHRpb25zIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC90YzAwNC13
ZWJ2dHQtZmlsZS52dHQiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSIgaWQ9ImRlZmF1bHQiID4KKyAg
ICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFjay1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3Qt
Y2hhbmdlZC1ieS1uZXctdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1uZXctdHJhY2stZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACitUZXN0cyB0aGF0IGEgdHJh
Y2sgYXBwZW5kZWQgYWZ0ZXIgdGhlIGluaXRpYWwgdHJhY2sgY29uZmlndXJhdGlvbiBkb2VzIG5v
dCBjaGFuZ2Ugb3RoZXIgdHJhY2tzLgorCisKK0VWRU5UKGxvYWQpIC0tIDxib2R5PgorRVhQRUNU
RUQgKHRyYWNrMS5yZWFkeVN0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh0cmFjazEudHJhY2su
bW9kZSA9PSAnMCcpIE9LCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSA8dmlkZW8+CisqKmNo
ZWNrIGluaXRpYWwgbWV0YWRhdGEgdHJhY2sgc3RhdGUKK0VYUEVDVEVEICh0cmFjazEucmVhZHlT
dGF0ZSA9PSAnMCcpIE9LCitFWFBFQ1RFRCAodHJhY2sxLnRyYWNrLm1vZGUgPT0gJzAnKSBPSwor
RVhQRUNURUQgKHRyYWNrMS50cmFjay5jdWVzID09ICdudWxsJykgT0sKK1JVTih0cmFjazEudHJh
Y2subW9kZSA9IFRleHRUcmFjay5ISURERU4pCisKK0VWRU5UKGxvYWQpIC0tIDx0cmFjayBraW5k
PSdtZXRhZGF0YScgPgorKipjaGVjayBtZXRhZGF0YSB0cmFjayBzdGF0ZQorRVhQRUNURUQgKHRy
YWNrMS5yZWFkeVN0YXRlID09ICcyJykgT0sKK0VYUEVDVEVEICh0cmFjazEudHJhY2subW9kZSA9
PSAnMScpIE9LCitFWFBFQ1RFRCAodHJhY2sxLnRyYWNrLmN1ZXMubGVuZ3RoID09ICcxMicpIE9L
CitFWFBFQ1RFRCAodHJhY2sxLnRyYWNrLmN1ZXNbMTFdLnN0YXJ0VGltZSA9PSAnMjInKSBPSwor
KiphZGQgYSBjYXB0aW9uIHRyYWNrLCBjb25maWd1cmVkIHRvIGxvYWQgYXV0b21hdGljYWxseQor
UlVOKHRyYWNrMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJykpCitSVU4odHJhY2sy
LnNldEF0dHJpYnV0ZSgna2luZCcsICdjYXB0aW9ucycpKQorUlVOKHRyYWNrMi5zZXRBdHRyaWJ1
dGUoJ2RlZmF1bHQnLCAnZGVmYXVsdCcpKQorUlVOKHRyYWNrMi5zZXRBdHRyaWJ1dGUoJ29ubG9h
ZCcsICdjYXB0aW9uc1RyYWNrTG9hZGVkKCknKSkKK1JVTih0cmFjazIuc2V0QXR0cmlidXRlKCdz
cmMnLCAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCcpKQorUlVOKHZpZGVv
LmFwcGVuZENoaWxkKHRyYWNrMikpCisKK0VWRU5UKGxvYWQpIC0tIDx0cmFjayBraW5kPSdjYXB0
aW9ucycgPgorKipjaGVjayB0aGF0IG1ldGFkYXRhIHRyYWNrIHN0YXRlIGhhcyBub3QgY2hhbmdl
ZAorRVhQRUNURUQgKHRyYWNrMS5yZWFkeVN0YXRlID09ICcyJykgT0sKK0VYUEVDVEVEICh0cmFj
azEudHJhY2subW9kZSA9PSAnMScpIE9LCisqKmFuZCB0aGF0IHRoZSBjYXB0aW9ucyB0cmFjayBz
dGF0ZSBpcyBjb3JyZWN0CitFWFBFQ1RFRCAodHJhY2syLnJlYWR5U3RhdGUgPT0gJzInKSBPSwor
RVhQRUNURUQgKHRyYWNrMi50cmFjay5tb2RlID09ICcyJykgT0sKKworRU5EIE9GIFRFU1QKKwpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1u
ZXctdHJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay1tb2RlLW5vdC1jaGFuZ2VkLWJ5LW5ldy10cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS1ub3QtY2hhbmdlZC1ieS1uZXctdHJhY2su
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlk
ZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgZnVu
Y3Rpb24gY2FwdGlvbnNUcmFja0xvYWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJFVkVOVChsb2FkKSAtLSAmbHQ7dHJhY2sga2luZD0nY2FwdGlvbnMn
ICZndDsiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxpPioqY2hlY2sgdGhhdCBt
ZXRhZGF0YSB0cmFjayBzdGF0ZSBoYXMgbm90IGNoYW5nZWQ8IiArICIvaT4iKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVu
dC5MT0FERUQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2sxLnRyYWNrLm1v
ZGUiLCBUZXh0VHJhY2suSElEREVOKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxp
PioqYW5kIHRoYXQgdGhlIGNhcHRpb25zIHRyYWNrIHN0YXRlIGlzIGNvcnJlY3Q8IiArICIvaT4i
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMi5yZWFkeVN0YXRlIiwgSFRN
TFRyYWNrRWxlbWVudC5MT0FERUQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJh
Y2syLnRyYWNrLm1vZGUiLCBUZXh0VHJhY2suU0hPV0lORyk7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhVHJhY2tMb2FkZWQoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQobG9hZCkgLS0gJmx0O3Ry
YWNrIGtpbmQ9J21ldGFkYXRhJyAmZ3Q7Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCI8aT4qKmNoZWNrIG1ldGFkYXRhIHRyYWNrIHN0YXRlPCIgKyAiL2k+Iik7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQu
TE9BREVEKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5tb2Rl
IiwgVGV4dFRyYWNrLkhJRERFTik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFj
azEudHJhY2suY3Vlcy5sZW5ndGgiLCAxMik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ0cmFjazEudHJhY2suY3Vlc1sxMV0uc3RhcnRUaW1lIiwgMjIpOworCisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8aT4qKmFkZCBhIGNhcHRpb24gdHJhY2ssIGNvbmZpZ3VyZWQgdG8g
bG9hZCBhdXRvbWF0aWNhbGx5PCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFj
azIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAg
cnVuKCJ0cmFjazIuc2V0QXR0cmlidXRlKCdraW5kJywgJ2NhcHRpb25zJykiKTsKKyAgICAgICAg
ICAgICAgICBydW4oInRyYWNrMi5zZXRBdHRyaWJ1dGUoJ2RlZmF1bHQnLCAnZGVmYXVsdCcpIik7
CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFjazIuc2V0QXR0cmlidXRlKCdvbmxvYWQnLCAnY2Fw
dGlvbnNUcmFja0xvYWRlZCgpJykiKTsKKyAgICAgICAgICAgICAgICBydW4oInRyYWNrMi5zZXRB
dHRyaWJ1dGUoJ3NyYycsICdjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0Jyki
KTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLmFwcGVuZENoaWxkKHRyYWNrMikiKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSAmbHQ7dmlkZW8m
Z3Q7Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoZWNrIGluaXRpYWwg
bWV0YWRhdGEgdHJhY2sgc3RhdGU8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInRyYWNrMS5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5OT05FKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5tb2RlIiwgVGV4dFRyYWNrLkRJ
U0FCTEVEKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrMS50cmFjay5jdWVz
IiwgbnVsbCk7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFjazEudHJhY2subW9kZSA9IFRleHRU
cmFjay5ISURERU4iKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+RVZFTlQobG9hZCkgLS0gJmx0O2JvZHkm
Z3Q7Iik7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgICAg
ICAgICAgdHJhY2sxID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHJhY2snKVswXTsgCisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEucmVhZHlTdGF0ZSIsIEhUTUxUcmFj
a0VsZW1lbnQuTk9ORSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjazEudHJh
Y2subW9kZSIsIFRleHRUcmFjay5ESVNBQkxFRCk7CisKKyAgICAgICAgICAgICAgICB2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L3Rlc3QiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8
cD5UZXN0cyB0aGF0IGEgdHJhY2sgYXBwZW5kZWQgYWZ0ZXIgdGhlIGluaXRpYWwgdHJhY2sgY29u
ZmlndXJhdGlvbiBkb2VzIG5vdCBjaGFuZ2Ugb3RoZXIgdHJhY2tzLjwvcD4KKyAgICAgICAgPHZp
ZGVvIG9uY2FucGxheXRocm91Z2g9ImNhbnBsYXl0aHJvdWdoKCkiID4gCisgICAgICAgICAgICA8
dHJhY2sga2luZD0ibWV0YWRhdGEiIHNyYz0iY2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dCIg
b25sb2FkPSJtZXRhZGF0YVRyYWNrTG9hZGVkKCkiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUt
dHJpZ2dlcnMtbG9hZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stbW9kZS10cmlnZ2Vycy1sb2FkaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMt
bG9hZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3Rz
IHRoYXQgYSAnbWV0YWRhdGEnIHRyYWNrIGRvZXMgbm90IGxvYWQgYXV0b21hdGljYWxseSwgYnV0
IGRvZXMgbG9hZCB3aGVuIHRoZSBtb2RlIGlzIGNoYW5nZWQuCisKKworRVZFTlQobG9hZCkgLS0g
PGJvZHk+CisqKmNoZWNrIGluaXRpYWwgbWV0YWRhdGEgdHJhY2sgc3RhdGUKK0VYUEVDVEVEICh0
cmFjay5yZWFkeVN0YXRlID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBd
Lm1vZGUgPT0gJzAnKSBPSworCitFVkVOVChjYW5wbGF5dGhyb3VnaCkgLS0gPHZpZGVvPgorKipj
aGFuZ2UgbWV0YWRhdGEgdHJhY2sgbW9kZSBzbyBpdCBsb2FkcworRVhQRUNURUQgKHRyYWNrLnJl
YWR5U3RhdGUgPT0gJzAnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9
PSAnMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzID09ICdudWxsJykg
T0sKK1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSBUZXh0VHJhY2suSElEREVOKQorCitF
VkVOVChsb2FkKSAtLSA8dHJhY2s+CisqKmNoZWNrIG1ldGFkYXRhIHRyYWNrIHN0YXRlCitFWFBF
Q1RFRCAodHJhY2sucmVhZHlTdGF0ZSA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2sudHJhY2su
bW9kZSA9PSAnMScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0
aCA9PSAnMTInKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0uY3Vlc1sxMV0uc3Rh
cnRUaW1lID09ICcyMicpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1vZGUtdHJpZ2dlcnMtbG9hZGluZy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbW9kZS10cmln
Z2Vycy1sb2FkaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAg
ICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrTG9hZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGxvYWQpIC0tICZsdDt0cmFjayZndDsiKTsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxpPioqY2hlY2sgbWV0YWRhdGEgdHJhY2sgc3Rh
dGU8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrLnJlYWR5
U3RhdGUiLCBIVE1MVHJhY2tFbGVtZW50LkxPQURFRCk7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ0cmFjay50cmFjay5tb2RlIiwgVGV4dFRyYWNrLkhJRERFTik7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmN1ZXMubGVuZ3RoIiwgMTIp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVz
WzExXS5zdGFydFRpbWUiLCAyMik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIkVWRU5UKGNhbnBsYXl0aHJvdWdoKSAtLSAmbHQ7dmlkZW8mZ3Q7Iik7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoYW5nZSBtZXRhZGF0YSB0cmFj
ayBtb2RlIHNvIGl0IGxvYWRzPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0cmFjay5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5OT05FKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSIsIFRleHRUcmFj
ay5ESVNBQkxFRCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzWzBdLmN1ZXMiLCBudWxsKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLnRleHRUcmFj
a3NbMF0ubW9kZSA9IFRleHRUcmFjay5ISURERU4iKTsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+RVZFTlQo
bG9hZCkgLS0gJmx0O2JvZHkmZ3Q7Iik7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8aT4qKmNoZWNrIGluaXRpYWwg
bWV0YWRhdGEgdHJhY2sgc3RhdGU8IiArICIvaT4iKTsKKyAgICAgICAgICAgICAgICB0cmFjayA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyYWNrJylbMF07IAorICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHJhY2sucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQuTk9ORSk7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUi
LCBUZXh0VHJhY2suRElTQUJMRUQpOworCisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmlu
ZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMg
dGhhdCBhICdtZXRhZGF0YScgdHJhY2sgZG9lcyBub3QgbG9hZCBhdXRvbWF0aWNhbGx5LCBidXQg
ZG9lcyBsb2FkIHdoZW4gdGhlIG1vZGUgaXMgY2hhbmdlZC48L3A+CisgICAgICAgIDx2aWRlbyBv
bmNhbnBsYXl0aHJvdWdoPSJjYW5wbGF5dGhyb3VnaCgpIiA+IAorICAgICAgICAgICAgPHRyYWNr
IGtpbmQ9Im1ldGFkYXRhIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9tZXRhZGF0YS52dHQiIG9ubG9h
ZD0idHJhY2tMb2FkZWQoKSI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L21ldGFkYXRh
LnZ0dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2
dHQvbWV0YWRhdGEudnR0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
Y2FwdGlvbnMtd2VidnR0L21ldGFkYXRhLnZ0dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBA
QAorV0VCVlRUCisKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDEuMDAwCitMb3JlbSBpcHN1bSBk
b2xvciBzaXQgYW1ldCwgCisKKzAwOjAwOjAyLjAwMCAtLT4gMDA6MDA6MDMuMDAwCitjb25zZWN0
ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCAKKworMDA6MDA6MDQuMDAwIC0tPiAwMDowMDowNS4wMDAK
K3NlZCBkaWFtIG5vbnVtbXkgbmliaCBldWlzbW9kIHRpbmNpZHVudCB1dCBsYW9yZWV0IGRvbG9y
ZSBtYWduYSBhbGlxdWFtIGVyYXQgdm9sdXRwYXQuIAorCiswMDowMDowNi4wMDAgLS0+IDAwOjAw
OjA3LjAwMAorVXQgd2lzaSBlbmltIGFkIG1pbmltIHZlbmlhbSwgCisKKzAwOjAwOjA4LjAwMCAt
LT4gMDA6MDA6MDkuMDAwCitxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBz
dXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQu
IAorCiswMDowMDoxMC4wMDAgLS0+IDAwOjAwOjExLjAwMAorRHVpcyBhdXRlbSB2ZWwgZXVtIGly
aXVyZSBkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0aWUg
Y29uc2VxdWF0LCAKKworMDA6MDA6MTIuMDAwIC0tPiAwMDowMDoxMy4wMDAKK3ZlbCBpbGx1bSBk
b2xvcmUgZXUgZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IGFjY3Vtc2Fu
IGV0IGl1c3RvIG9kaW8KKworMDA6MDA6MTQuMDAwIC0tPiAwMDowMDoxNS4wMDAKK2RpZ25pc3Np
bSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMg
ZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuCisKKzAwOjAwOjE2LjAwMCAtLT4gMDA6
MDA6MTcuMDAwCitOYW0gbGliZXIgdGVtcG9yIGN1bSBzb2x1dGEgbm9iaXMgZWxlaWZlbmQgb3B0
aW9uIGNvbmd1ZSBuaWhpbCBpbXBlcmRpZXQgZG9taW5nIGlkCisKKzAwOjAwOjE4LjAwMCAtLT4g
MDA6MDA6MTkuMDAwCitxdW9kIG1hemltIHBsYWNlcmF0IGZhY2VyIHBvc3NpbSBhc3N1bS4gCisK
KzAwOjAwOjIwLjAwMCAtLT4gMDA6MDA6MjEuMDAwCitUeXBpIG5vbiBoYWJlbnQgY2xhcml0YXRl
bSBpbnNpdGFtOworCiswMDowMDoyMi4wMDAgLS0+IDAwOjAwOjIzLjAwMAorZXN0IHVzdXMgbGVn
ZW50aXMgaW4gaWlzIHF1aSBmYWNpdCBlb3J1bSBjbGFyaXRhdGVtLgorCg==
</data>
<flag name="review"
          id="119249"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>