<?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>159954</bug_id>
          
          <creation_ts>2016-07-19 15:24:15 -0700</creation_ts>
          <short_desc>CrashOnOverflow in JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets</short_desc>
          <delta_ts>2016-07-20 07:51:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1212555</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 15:24:15 -0700</bug_when>
    <thetext>We are failing on regular expressions that exceed 2^32 characters.  For example:
  /a{2147483649,2147483650}a{2147483649,2147483650}/

Backtraces look something like:
    #0 0x10a0d2cb8 in WTFCrash (JavaScriptCore+0x2a87cb8)
    #1 0x10766291d in WTF::CrashOnOverflow::crash() (JavaScriptCore+0x1791d)
    #2 0x1076628bd in WTF::CrashOnOverflow::overflowed() (JavaScriptCore+0x178bd)
    #3 0x10a0ab684 in WTF::Checked&lt;unsigned int, WTF::CrashOnOverflow&gt; const WTF::Checked&lt;unsigned int, WTF::CrashOnOverflow&gt;::operator+=&lt;unsigned int&gt;(unsigned int) (JavaScriptCore+0x2a60684)
    #4 0x10a0ab0b0 in WTF::Checked&lt;unsigned int, WTF::CrashOnOverflow&gt; const WTF::Checked&lt;unsigned int, WTF::CrashOnOverflow&gt;::operator+=&lt;unsigned int, WTF::CrashOnOverflow&gt;(WTF::Checked&lt;unsigned int, WTF::CrashOnOverflow&gt;) (JavaScriptCore+0x2a600b0)
    #5 0x10a0a9f6a in JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets(JSC::Yarr::PatternAlternative*, unsigned int, unsigned int, unsigned int&amp;) (JavaScriptCore+0x2a5ef6a)
    #6 0x10a0a8035 in JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets(JSC::Yarr::PatternDisjunction*, unsigned int, unsigned int, unsigned int&amp;) (JavaScriptCore+0x2a5d035)
    #7 0x10a0aa835 in JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets(JSC::Yarr::PatternAlternative*, unsigned int, unsigned int, unsigned int&amp;) (JavaScriptCore+0x2a5f835)
    #8 0x10a0a8035 in JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets(JSC::Yarr::PatternDisjunction*, unsigned int, unsigned int, unsigned int&amp;) (JavaScriptCore+0x2a5d035)
    #9 0x10a09d9f2 in JSC::Yarr::YarrPatternConstructor::setupOffsets() (JavaScriptCore+0x2a529f2)
    #10 0x10a09ba89 in JSC::Yarr::YarrPattern::compile(WTF::String const&amp;, void*) (JavaScriptCore+0x2a50a89)
    ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212556</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 15:24:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/27009529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212562</commentid>
    <comment_count>2</comment_count>
      <attachid>284063</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 15:37:29 -0700</bug_when>
    <thetext>Created attachment 284063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212563</commentid>
    <comment_count>3</comment_count>
      <attachid>284063</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-19 15:40:34 -0700</bug_when>
    <thetext>Comment on attachment 284063
Patch

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

No test? :(

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        YarrPatternConstructor::setupAlternativeOffsets() is using theecked arithmetic class

typo: &quot;theecked arithmetic&quot;

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:671
&gt; +                    error = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize + YarrStackSpaceForBackTrackInfoParentheticalAssertion, currentInputPosition.unsafeGet(), currentCallFrameSize);

The indentation looks off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212564</commentid>
    <comment_count>4</comment_count>
      <attachid>284063</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-19 15:43:12 -0700</bug_when>
    <thetext>Comment on attachment 284063
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        YarrPatternConstructor::setupAlternativeOffsets() is using theecked arithmetic class

typo: &quot;theecked&quot;

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:643
&gt; +                    error = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition.unsafeGet(), currentCallFrameSize);

Nit: I&apos;d make these error checks UNLIKELY

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:896
&gt; +        0, // NoError

nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212566</commentid>
    <comment_count>5</comment_count>
      <attachid>284063</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-19 15:45:21 -0700</bug_when>
    <thetext>Comment on attachment 284063
Patch

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

Do you have a test case?

&gt;&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:671
&gt;&gt; +                    error = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize + YarrStackSpaceForBackTrackInfoParentheticalAssertion, currentInputPosition.unsafeGet(), currentCallFrameSize);
&gt; 
&gt; The indentation looks off.

Whitespace? idk if this is just bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212568</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 15:46:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 284063 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284063&amp;action=review
&gt; 
&gt; No test? :(

Didn&apos;t &quot;svn add&quot; the test file when creating the patch.

&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        YarrPatternConstructor::setupAlternativeOffsets() is using theecked arithmetic class
&gt; 
&gt; typo: &quot;theecked arithmetic&quot;

Fixed.
 
&gt; &gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:671
&gt; &gt; +                    error = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize + YarrStackSpaceForBackTrackInfoParentheticalAssertion, currentInputPosition.unsafeGet(), currentCallFrameSize);
&gt; 
&gt; The indentation looks off.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212569</commentid>
    <comment_count>7</comment_count>
      <attachid>284064</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 15:49:28 -0700</bug_when>
    <thetext>Created attachment 284064
Patch for landing with suggested fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212584</commentid>
    <comment_count>8</comment_count>
      <attachid>284064</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 16:15:40 -0700</bug_when>
    <thetext>Comment on attachment 284064
Patch for landing with suggested fixes

Need to export YarrPattern::error() to the rest of webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212670</commentid>
    <comment_count>9</comment_count>
      <attachid>284088</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-19 23:28:57 -0700</bug_when>
    <thetext>Created attachment 284088
Patch for landing - exported YarrPattern::errorMessage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212731</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-07-20 07:51:31 -0700</bug_when>
    <thetext>Committed r203452: &lt;http://trac.webkit.org/changeset/203452&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284063</attachid>
            <date>2016-07-19 15:37:29 -0700</date>
            <delta_ts>2016-07-19 15:49:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>159954.patch</filename>
            <type>text/plain</type>
            <size>20375</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE2LTA3LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoT25PdmVyZmxvdyBpbiBKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
OnNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpzZXR1cEFsdGVybmF0aXZl
T2Zmc2V0cygpIGlzIHVzaW5nIHRoZWVja2VkIGFyaXRobWV0aWMgY2xhc3MKKyAgICAgICAgQ2hl
Y2tlZDw+LCBmb3Igb2Zmc2V0IGNhbGN1bGF0aW9ucy4gIEhvd2V2ZXIgdGhlIGRlZmF1bHQgdXNl
IHdpbGwganVzdCBjcmFzaCBvbgorICAgICAgICBvdmVyZmxvdy4gIEluc3RlYWQgd2Ugc2hvdWxk
IHN0b3AgcHJvY2Vzc2luZyBhbmQgcHJvcGFnYXRlIHRoZSBlcnJvciB1cCB0aGUgY2FsbCBzdGFj
ay4KKworICAgICAgICBDb25zb2xpZGF0ZWQgZXhwbGljaXQgZXJyb3Igc3RyaW5nIHdpdGggdGhl
IGNvbW1vbiBSZWdFeHAgcGFyc2luZyBlcnJvciBsb2dpYy4KKyAgICAgICAgTW92ZWQgdGhhdCBs
b2dpYyB0byBZYXJyUGF0dGVybiBhcyB0aGF0IHNlZW1zIGxpa2UgYSBiZXR0ZXIgY29tbW9uIHBs
YWNlIHRvIHB1dCBpdC4KKworICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiB5YXJy
L1lhcnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFz
c1BhcnNlckRlbGVnYXRlOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tUGF0
dGVybkNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6UGFyc2VyKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjppc0lkZW50aXR5RXNjYXBlQW5FcnJvcik6CisgICAg
ICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VFc2NhcGUpOgorICAgICAgICAoSlNDOjpZYXJy
OjpQYXJzZXI6OnBhcnNlQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJz
ZXI6OnBhcnNlUGFyZW50aGVzZXNCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6
cGFyc2VQYXJlbnRoZXNlc0VuZCk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VR
dWFudGlmaWVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVRva2Vucyk6Cisg
ICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHlhcnIvWWFyclBh
dHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpk
aXNqdW5jdGlvbik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
OnNldHVwRGlzanVuY3Rpb25PZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRl
cm5Db25zdHJ1Y3Rvcjo6c2V0dXBPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBh
dHRlcm46OmVycm9yTWVzc2FnZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpj
b21waWxlKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuOjpyZXNldCk6CisKIDIwMTYtMDctMTkgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdDI2MiBzaG91bGQgaGF2ZSBhIGZp
bGUgd2l0aCB0aGUgcmV2aXNpb24gYW5kIHVybApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDM0MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MzYsNyArNTM2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19y
ZWdleAogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2Rl
QmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CiAgICAgaWYgKCFyZWdFeHAtPmlzVmFs
aWQoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFs
aWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7
CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAkocmV2aXNpb24gMjAzNDEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw4ICszMiw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAK
LSNkZWZpbmUgUkVHRVhQX0VSUk9SX1BSRUZJWCAiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246
ICIKLQogZW51bSBCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCB7CiAgICAgRGlnaXRDbGFzc0lELAog
ICAgIFNwYWNlQ2xhc3NJRCwKQEAgLTQ4LDIzICs0Niw2IEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRnJpZW5kRGVsZWdhdGU+CiAgICAgZnJpZW5kIGNvbnN0IGNoYXIqIHBhcnNlKEZy
aWVuZERlbGVnYXRlJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5z
aWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKIAotICAgIGVudW0gRXJyb3JDb2RlIHsKLSAgICAg
ICAgTm9FcnJvciwKLSAgICAgICAgUGF0dGVyblRvb0xhcmdlLAotICAgICAgICBRdWFudGlmaWVy
T3V0T2ZPcmRlciwKLSAgICAgICAgUXVhbnRpZmllcldpdGhvdXRBdG9tLAotICAgICAgICBRdWFu
dGlmaWVyVG9vTGFyZ2UsCi0gICAgICAgIE1pc3NpbmdQYXJlbnRoZXNlcywKLSAgICAgICAgUGFy
ZW50aGVzZXNVbm1hdGNoZWQsCi0gICAgICAgIFBhcmVudGhlc2VzVHlwZUludmFsaWQsCi0gICAg
ICAgIENoYXJhY3RlckNsYXNzVW5tYXRjaGVkLAotICAgICAgICBDaGFyYWN0ZXJDbGFzc091dE9m
T3JkZXIsCi0gICAgICAgIEVzY2FwZVVudGVybWluYXRlZCwKLSAgICAgICAgSW52YWxpZFVuaWNv
ZGVFc2NhcGUsCi0gICAgICAgIEludmFsaWRJZGVudGl0eUVzY2FwZSwKLSAgICAgICAgTnVtYmVy
T2ZFcnJvckNvZGVzCi0gICAgfTsKLQogICAgIC8qCiAgICAgICogQ2hhcmFjdGVyQ2xhc3NQYXJz
ZXJEZWxlZ2F0ZToKICAgICAgKgpAQCAtNzYsNyArNTcsNyBAQCBwcml2YXRlOgogICAgICAqLwog
ICAgIGNsYXNzIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQ2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIEVy
cm9yQ29kZSYgZXJyKQorICAgICAgICBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKERlbGVn
YXRlJiBkZWxlZ2F0ZSwgWWFyclBhdHRlcm46OkVycm9yQ29kZSYgZXJyKQogICAgICAgICAgICAg
OiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAgICAgLCBtX2VycihlcnIpCiAgICAgICAg
ICAgICAsIG1fc3RhdGUoRW1wdHkpCkBAIC0xMzgsNyArMTE5LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgY2FzZSBDYWNoZWRDaGFyYWN0ZXJIeXBoZW46CiAgICAgICAgICAgICAgICAgaWYg
KGNoIDwgbV9jaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBDaGFyYWN0
ZXJDbGFzc091dE9mT3JkZXI7CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRl
cm46OkNoYXJhY3RlckNsYXNzT3V0T2ZPcmRlcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2RlbGVnYXRlLmF0b21DaGFy
YWN0ZXJDbGFzc1JhbmdlKG1fY2hhcmFjdGVyLCBjaCk7CkBAIC0yMTksNyArMjAwLDcgQEAgcHJp
dmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIERlbGVnYXRlJiBtX2RlbGVnYXRlOwotICAg
ICAgICBFcnJvckNvZGUmIG1fZXJyOworICAgICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlJiBt
X2VycjsKICAgICAgICAgZW51bSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKICAg
ICAgICAgICAgIEVtcHR5LAogICAgICAgICAgICAgQ2FjaGVkQ2hhcmFjdGVyLApAQCAtMjMzLDcg
KzIxNCw3IEBAIHByaXZhdGU6CiAgICAgUGFyc2VyKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxp
bWl0KQogICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9iYWNrUmVm
ZXJlbmNlTGltaXQoYmFja1JlZmVyZW5jZUxpbWl0KQotICAgICAgICAsIG1fZXJyKE5vRXJyb3Ip
CisgICAgICAgICwgbV9lcnIoWWFyclBhdHRlcm46Ok5vRXJyb3IpCiAgICAgICAgICwgbV9kYXRh
KHBhdHRlcm4uY2hhcmFjdGVyczxDaGFyVHlwZT4oKSkKICAgICAgICAgLCBtX3NpemUocGF0dGVy
bi5sZW5ndGgoKSkKICAgICAgICAgLCBtX2luZGV4KDApCkBAIC0yNDgsNyArMjI5LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzSWRlbnRpdHlFc2NhcGVBbkVycm9yKGludCBjaCkKICAgICB7CiAg
ICAgICAgIGlmIChtX2lzVW5pY29kZSAmJiAhc3RyY2hyKCJeJFxcLiorPygpW117fXwvIiwgY2gp
KSB7Ci0gICAgICAgICAgICBtX2VyciA9IEludmFsaWRJZGVudGl0eUVzY2FwZTsKKyAgICAgICAg
ICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRJZGVudGl0eUVzY2FwZTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTI4Myw3ICsyNjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBjb25zdW1lKCk7CiAKICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkpIHsK
LSAgICAgICAgICAgIG1fZXJyID0gRXNjYXBlVW50ZXJtaW5hdGVkOworICAgICAgICAgICAgbV9l
cnIgPSBZYXJyUGF0dGVybjo6RXNjYXBlVW50ZXJtaW5hdGVkOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKQEAgLTQ0OSwxOSArNDMwLDE5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAwOwogICAgICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzQVNDSUlIZXhE
aWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEludmFsaWRV
bmljb2RlRXNjYXBlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVy
bjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNvZGVQb2ludCA9
IChjb2RlUG9pbnQgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9lcnIgPSBJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOwog
ICAgICAgICAgICAgICAgIH0gd2hpbGUgKCFhdEVuZE9mUGF0dGVybigpICYmIHBlZWsoKSAhPSAn
fScpOwogICAgICAgICAgICAgICAgIGlmICghYXRFbmRPZlBhdHRlcm4oKSAmJiBwZWVrKCkgPT0g
J30nKQogICAgICAgICAgICAgICAgICAgICBjb25zdW1lKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIW1fZXJyKQotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEludmFsaWRVbmljb2Rl
RXNjYXBlOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlk
VW5pY29kZUVzY2FwZTsKICAgICAgICAgICAgICAgICBpZiAobV9lcnIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTgxLDcgKzU2Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lcnIgPSBDaGFyYWN0
ZXJDbGFzc1VubWF0Y2hlZDsKKyAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6Q2hhcmFjdGVy
Q2xhc3NVbm1hdGNoZWQ7CiAgICAgfQogCiAgICAgLyoKQEAgLTU5Nyw3ICs1NzgsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIGlmICh0cnlDb25zdW1lKCc/JykpIHsKICAgICAgICAgICAgIGlmIChh
dEVuZE9mUGF0dGVybigpKSB7Ci0gICAgICAgICAgICAgICAgbV9lcnIgPSBQYXJlbnRoZXNlc1R5
cGVJbnZhbGlkOworICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBhcmVudGhl
c2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CkBAIC02MTUsNyArNTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX2VyciA9
IFBhcmVudGhlc2VzVHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0
dGVybjo6UGFyZW50aGVzZXNUeXBlSW52YWxpZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdp
bigpOwpAQCAtNjM3LDcgKzYxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3BhcmVudGhl
c2VzTmVzdGluZ0RlcHRoID4gMCkKICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbVBhcmVudGhl
c2VzRW5kKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZXJyID0gUGFyZW50aGVzZXNV
bm1hdGNoZWQ7CisgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1Vu
bWF0Y2hlZDsKIAogICAgICAgICAtLW1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGg7CiAgICAgfQpA
QCAtNjUzLDE0ICs2MzQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1pbiA8PSBtYXgp
OwogCiAgICAgICAgIGlmIChtaW4gPT0gVUlOVF9NQVgpIHsKLSAgICAgICAgICAgIG1fZXJyID0g
UXVhbnRpZmllclRvb0xhcmdlOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVh
bnRpZmllclRvb0xhcmdlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGxhc3RUb2tlbldhc0FuQXRvbSkKICAgICAgICAgICAgIG1fZGVsZWdhdGUucXVhbnRp
ZnlBdG9tKG1pbiwgbWF4LCAhdHJ5Q29uc3VtZSgnPycpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9lcnIgPSBRdWFudGlmaWVyV2l0aG91dEF0b207CisgICAgICAgICAgICBtX2VyciA9
IFlhcnJQYXR0ZXJuOjpRdWFudGlmaWVyV2l0aG91dEF0b207CiAgICAgfQogCiAgICAgLyoKQEAg
LTc1NCw3ICs3MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1p
biA8PSBtYXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VRdWFudGlmaWVyKGxh
c3RUb2tlbldhc0FuQXRvbSwgbWluLCBtYXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gUXVhbnRpZmllck91dE9mT3Jk
ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVh
bnRpZmllck91dE9mT3JkZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0VG9rZW5XYXNB
bkF0b20gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC03NzUsNyArNzU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChtX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoID4gMCkKLSAgICAgICAgICAgIG1f
ZXJyID0gTWlzc2luZ1BhcmVudGhlc2VzOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVy
bjo6TWlzc2luZ1BhcmVudGhlc2VzOwogICAgIH0KIAogICAgIC8qCkBAIC03ODcsMjkgKzc2OCwx
MiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHBhcnNlKCkKICAgICB7CiAgICAgICAgIGlm
IChtX3NpemUgPiBNQVhfUEFUVEVSTl9TSVpFKQotICAgICAgICAgICAgbV9lcnIgPSBQYXR0ZXJu
VG9vTGFyZ2U7CisgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXR0ZXJuVG9vTGFy
Z2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcnNlVG9rZW5zKCk7CiAgICAgICAgIEFT
U0VSVChhdEVuZE9mUGF0dGVybigpIHx8IG1fZXJyKTsKLQotICAgICAgICAvLyBUaGUgb3JkZXIg
b2YgdGhpcyBhcnJheSBtdXN0IG1hdGNoIHRoZSBFcnJvckNvZGUgZW51bS4KLSAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZXNbTnVtYmVyT2ZFcnJvckNvZGVzXSA9IHsKLSAg
ICAgICAgICAgIDAsIC8vIE5vRXJyb3IKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
InJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLAotICAgICAgICAgICAgUkVHRVhQX0VSUk9S
X1BSRUZJWCAibnVtYmVycyBvdXQgb2Ygb3JkZXIgaW4ge30gcXVhbnRpZmllciIsCi0gICAgICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJlcGVhdCIsCi0gICAgICAgICAg
ICBSRUdFWFBfRVJST1JfUFJFRklYICJudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXIi
LAotICAgICAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibWlzc2luZyApIiwKLSAgICAgICAg
ICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInVubWF0Y2hlZCBwYXJlbnRoZXNlcyIsCi0gICAgICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyIGFmdGVyICg/
IiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgdGVybWluYXRpbmcg
XSBmb3IgY2hhcmFjdGVyIGNsYXNzIiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
InJhbmdlIG91dCBvZiBvcmRlciBpbiBjaGFyYWN0ZXIgY2xhc3MiLAotICAgICAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiXFwgYXQgZW5kIG9mIHBhdHRlcm4iLAotICAgICAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCB1bmljb2RlIHt9IGVzY2FwZSIsCi0gICAgICAgICAg
ICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGVzY2FwZWQgY2hhcmFjdGVyIGZvciB1bmlj
b2RlIHBhdHRlcm4iCi0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZXNb
bV9lcnJdOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjplcnJvck1lc3Nh
Z2UobV9lcnIpOwogICAgIH0KIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9uczoKQEAgLTkx
Myw3ICs4NzcsNyBAQCBwcml2YXRlOgogCiAgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7CiAgICAg
dW5zaWduZWQgbV9iYWNrUmVmZXJlbmNlTGltaXQ7Ci0gICAgRXJyb3JDb2RlIG1fZXJyOworICAg
IFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgbV9lcnI7CiAgICAgY29uc3QgQ2hhclR5cGUqIG1fZGF0
YTsKICAgICB1bnNpZ25lZCBtX3NpemU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDIwMzQx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTc4LDEzICs1NzgsMTQgQEAgcHVibGljOgogICAgICAgICBtX2FsdGVybmF0
aXZlID0gbV9hbHRlcm5hdGl2ZS0+bV9wYXJlbnQtPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAg
fQogCi0gICAgYm9vbCBzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cyhQYXR0ZXJuQWx0ZXJuYXRpdmUq
IGFsdGVybmF0aXZlLCB1bnNpZ25lZCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5p
dGlhbElucHV0UG9zaXRpb24sIHVuc2lnbmVkJiBuZXdDYWxsRnJhbWVTaXplKSBXQVJOX1VOVVNF
RF9SRVRVUk4KKyAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIHNldHVwQWx0ZXJuYXRpdmVPZmZz
ZXRzKFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHVuc2lnbmVkIGN1cnJlbnRDYWxs
RnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIG5ld0Nh
bGxGcmFtZVNpemUpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICAgICAgICAgaWYgKFVOTElL
RUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OlRvb01hbnlEaXNqdW5jdGlvbnM7CiAKKyAgICAg
ICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvciA9IFlhcnJQYXR0ZXJuOjpOb0Vycm9yOwog
ICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSB0cnVlOwotICAgICAgICBDaGVj
a2VkPHVuc2lnbmVkPiBjdXJyZW50SW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9u
OworICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY3VycmVudElucHV0
UG9zaXRpb24gPSBpbml0aWFsSW5wdXRQb3NpdGlvbjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1fdGVybXNbaV07CkBAIC02Mzks
MjIgKzY0MCwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlD
b3VudCA9PSAxICYmICF0ZXJtLnBhcmVudGhlc2VzLmlzQ29weSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwg
Y3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBj
dXJyZW50Q2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMo
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJl
bnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgcXVhbnRpdHkgaXMgZml4ZWQsIHRo
ZW4gcHJlLWNoZWNrIGl0cyBtaW5pbXVtIHNpemUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVu
Y3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3Np
dGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzVGVybWluYWw7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2V0dXBE
aXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENh
bGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2Fs
bEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJl
bnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBv
c2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
ICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9z
aXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZl
R2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRDYWxsRnJhbWVTaXpl
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0u
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIDAsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdl
dCgpLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9m
ZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgMCwgY3VycmVudElucHV0UG9zaXRp
b24udW5zYWZlR2V0KCksIGlnbm9yZWRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZv
ckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgLy8gRml4ZWQgY291bnQgb2YgMSBjb3VsZCBiZSBhY2NlcHRlZCwgaWYgdGhleSBoYXZl
IGEgZml4ZWQgc2l6ZSAqQU5EKiBpZiBhbGwgYWx0ZXJuYXRpdmVzIGFyZSBvZiB0aGUgc2FtZSBs
ZW5ndGguCkBAIC02NjQsOCArNjY4LDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgdGVy
bS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAg
ICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhl
c2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9y
QmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9u
LnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0
aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1l
U2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRp
b24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgpAQCAtNjczLDE3ICs2NzgsMTkgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBv
c2l0aW9uOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGN1cnJlbnRJbnB1dFBvc2l0aW9uLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gWWFyclBhdHRlcm46Ok9mZnNldFRvb0xhcmdlOwogICAgICAgICB9CiAKICAg
ICAgICAgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPSAoY3VycmVudElucHV0UG9zaXRpb24g
LSBpbml0aWFsSW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CiAgICAgICAgIG5ld0NhbGxGcmFt
ZVNpemUgPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBib29sIHNldHVwRGlzanVuY3Rpb25PZmZz
ZXRzKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVkIGluaXRpYWxDYWxs
RnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIGNhbGxG
cmFtZVNpemUpIFdBUk5fVU5VU0VEX1JFVFVSTgorICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUg
c2V0dXBEaXNqdW5jdGlvbk9mZnNldHMoUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwg
dW5zaWduZWQgaW5pdGlhbENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGluaXRpYWxJbnB1dFBvc2l0
aW9uLCB1bnNpZ25lZCYgY2FsbEZyYW1lU2l6ZSkKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VM
WSghaXNTYWZlVG9SZWN1cnNlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjpUb29NYW55RGlzanVuY3Rpb25zOwogCiAgICAgICAg
IGlmICgoZGlzanVuY3Rpb24gIT0gbV9wYXR0ZXJuLm1fYm9keSkgJiYgKGRpc2p1bmN0aW9uLT5t
X2FsdGVybmF0aXZlcy5zaXplKCkgPiAxKSkKICAgICAgICAgICAgIGluaXRpYWxDYWxsRnJhbWVT
aXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlOwpAQCAtNjkx
LDEyICs2OTgsMTQgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBtaW5pbXVtSW5wdXRTaXpl
ID0gVUlOVF9NQVg7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1DYWxsRnJhbWVTaXplID0gMDsK
ICAgICAgICAgYm9vbCBoYXNGaXhlZFNpemUgPSB0cnVlOworICAgICAgICBZYXJyUGF0dGVybjo6
RXJyb3JDb2RlIGVycm9yID0gWWFyclBhdHRlcm46Ok5vRXJyb3I7CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBhbHQgPSAwOyBhbHQgPCBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgp
OyArK2FsdCkgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9
IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgpOwogICAgICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgICAgIGlmICgh
c2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMoYWx0ZXJuYXRpdmUsIGluaXRpYWxDYWxsRnJhbWVTaXpl
LCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgY3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZXJyb3IgPSBzZXR1
cEFsdGVybmF0aXZlT2Zmc2V0cyhhbHRlcm5hdGl2ZSwgaW5pdGlhbENhbGxGcmFtZVNpemUsIGlu
aXRpYWxJbnB1dFBvc2l0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKTsKKyAg
ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAg
ICAgICAgICBtaW5pbXVtSW5wdXRTaXplID0gc3RkOjptaW4obWluaW11bUlucHV0U2l6ZSwgYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwogICAgICAgICAgICAgbWF4aW11bUNhbGxGcmFtZVNp
emUgPSBzdGQ6Om1heChtYXhpbXVtQ2FsbEZyYW1lU2l6ZSwgY3VycmVudEFsdGVybmF0aXZlQ2Fs
bEZyYW1lU2l6ZSk7CiAgICAgICAgICAgICBoYXNGaXhlZFNpemUgJj0gYWx0ZXJuYXRpdmUtPm1f
aGFzRml4ZWRTaXplOwpAQCAtNzExLDE1ICs3MjAsMTYgQEAgcHVibGljOgogICAgICAgICBkaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZSA9IG1pbmltdW1JbnB1dFNpemU7CiAgICAgICAgIGRpc2p1
bmN0aW9uLT5tX2NhbGxGcmFtZVNpemUgPSBtYXhpbXVtQ2FsbEZyYW1lU2l6ZTsKICAgICAgICAg
Y2FsbEZyYW1lU2l6ZSA9IG1heGltdW1DYWxsRnJhbWVTaXplOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIHNldHVw
T2Zmc2V0cygpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogWWFyciBzaG91bGQgbm90IHVzZSB0
aGUgc3RhY2sgdG8gaGFuZGxlIHN1YnBhdHRlcm5zIChyZGFyOi8vcHJvYmxlbS8yNjQzNjMxNCku
CiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRDYWxsRnJhbWVTaXplOwotICAgICAgICBpZiAoIXNl
dHVwRGlzanVuY3Rpb25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAsIGlnbm9yZWRDYWxs
RnJhbWVTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28g
bWFueSBuZXN0ZWQgZGlzanVuY3Rpb25zIjsKKyAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29k
ZSBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAs
IGlnbm9yZWRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIFlhcnJQYXR0ZXJuOjplcnJvck1lc3NhZ2UoZXJyb3IpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTg3OCw2ICs4ODgsMzEgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbjsKIH07CiAKK2NvbnN0IGNoYXIqIFlhcnJQ
YXR0ZXJuOjplcnJvck1lc3NhZ2UoWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvcikKK3sKKyNk
ZWZpbmUgUkVHRVhQX0VSUk9SX1BSRUZJWCAiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICIK
KyAgICAvLyBUaGUgb3JkZXIgb2YgdGhpcyBhcnJheSBtdXN0IG1hdGNoIHRoZSBFcnJvckNvZGUg
ZW51bS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlc1tOdW1iZXJPZkVycm9y
Q29kZXNdID0geworICAgICAgICAwLCAvLyBOb0Vycm9yCisgICAgICAgIFJFR0VYUF9FUlJPUl9Q
UkVGSVggInJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLAorICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJudW1iZXJzIG91dCBvZiBvcmRlciBpbiB7fSBxdWFudGlmaWVyIiwKKyAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibm90aGluZyB0byByZXBlYXQiLAorICAgICAgICBSRUdF
WFBfRVJST1JfUFJFRklYICJudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXIiLAorICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJtaXNzaW5nICkiLAorICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLAorICAgICAgICBSRUdFWFBfRVJST1Jf
UFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyIGFmdGVyICg/IiwKKyAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBjaGFyYWN0ZXIgY2xhc3Mi
LAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBvdXQgb2Ygb3JkZXIgaW4gY2hh
cmFjdGVyIGNsYXNzIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiXFwgYXQgZW5kIG9m
IHBhdHRlcm4iLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIHVuaWNvZGUg
e30gZXNjYXBlIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVk
IGNoYXJhY3RlciBmb3IgdW5pY29kZSBwYXR0ZXJuIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BS
RUZJWCAidG9vIG1hbnkgbmVzdGVkIGRpc2p1bmN0aW9ucyIsCisgICAgICAgIFJFR0VYUF9FUlJP
Ul9QUkVGSVggInBhdHRlcm4gZXhjZWVkcyBzdHJpbmcgbGVuZ3RoIGxpbWl0cyIKKyAgICB9Owor
CisgICAgcmV0dXJuIGVycm9yTWVzc2FnZXNbZXJyb3JdOworfQorCiBjb25zdCBjaGFyKiBZYXJy
UGF0dGVybjo6Y29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNr
TGltaXQpCiB7CiAgICAgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcigqdGhpcywg
c3RhY2tMaW1pdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmgJKHJldmlzaW9uIDIwMzQxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsMjcgQEAgc3RydWN0IFRlcm1D
aGFpbiB7CiBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQ
YXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MsIGNvbnN0IGNoYXIqKiBl
cnJvciwgdm9pZCogc3RhY2tMaW1pdCA9IG51bGxwdHIpOwogCisgICAgZW51bSBFcnJvckNvZGUg
eworICAgICAgICBOb0Vycm9yLAorICAgICAgICBQYXR0ZXJuVG9vTGFyZ2UsCisgICAgICAgIFF1
YW50aWZpZXJPdXRPZk9yZGVyLAorICAgICAgICBRdWFudGlmaWVyV2l0aG91dEF0b20sCisgICAg
ICAgIFF1YW50aWZpZXJUb29MYXJnZSwKKyAgICAgICAgTWlzc2luZ1BhcmVudGhlc2VzLAorICAg
ICAgICBQYXJlbnRoZXNlc1VubWF0Y2hlZCwKKyAgICAgICAgUGFyZW50aGVzZXNUeXBlSW52YWxp
ZCwKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQsCisgICAgICAgIENoYXJhY3RlckNs
YXNzT3V0T2ZPcmRlciwKKyAgICAgICAgRXNjYXBlVW50ZXJtaW5hdGVkLAorICAgICAgICBJbnZh
bGlkVW5pY29kZUVzY2FwZSwKKyAgICAgICAgSW52YWxpZElkZW50aXR5RXNjYXBlLAorICAgICAg
ICBUb29NYW55RGlzanVuY3Rpb25zLAorICAgICAgICBPZmZzZXRUb29MYXJnZSwKKyAgICAgICAg
TnVtYmVyT2ZFcnJvckNvZGVzCisgICAgfTsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
ZXJyb3JNZXNzYWdlKEVycm9yQ29kZSk7CisKICAgICB2b2lkIHJlc2V0KCkKICAgICB7CiAgICAg
ICAgIG1fbnVtU3VicGF0dGVybnMgPSAwOwo=
</data>
<flag name="review"
          id="307717"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284064</attachid>
            <date>2016-07-19 15:49:28 -0700</date>
            <delta_ts>2016-07-19 23:31:37 -0700</delta_ts>
            <desc>Patch for landing with suggested fixes</desc>
            <filename>159954-2.patch</filename>
            <type>text/plain</type>
            <size>21733</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE2LTA3LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoT25PdmVyZmxvdyBpbiBKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
OnNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQ
b3VsYWluLgorCisgICAgICAgIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwQWx0ZXJuYXRp
dmVPZmZzZXRzKCkgaXMgdXNpbmcgdGhlIGNoZWNrZWQgYXJpdGhtZXRpYyBjbGFzcworICAgICAg
ICBDaGVja2VkPD4sIGZvciBvZmZzZXQgY2FsY3VsYXRpb25zLiAgSG93ZXZlciB0aGUgZGVmYXVs
dCB1c2Ugd2lsbCBqdXN0IGNyYXNoIG9uCisgICAgICAgIG92ZXJmbG93LiAgSW5zdGVhZCB3ZSBz
aG91bGQgc3RvcCBwcm9jZXNzaW5nIGFuZCBwcm9wYWdhdGUgdGhlIGVycm9yIHVwIHRoZSBjYWxs
IHN0YWNrLgorCisgICAgICAgIENvbnNvbGlkYXRlZCBleHBsaWNpdCBlcnJvciBzdHJpbmcgd2l0
aCB0aGUgY29tbW9uIFJlZ0V4cCBwYXJzaW5nIGVycm9yIGxvZ2ljLgorICAgICAgICBNb3ZlZCB0
aGF0IGxvZ2ljIHRvIFlhcnJQYXR0ZXJuIGFzIHRoYXQgc2VlbXMgbGlrZSBhIGJldHRlciBjb21t
b24gcGxhY2UgdG8gcHV0IGl0LgorCisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9yZWdyZXNzLTE1OTk1NC5qczogTmV3IHRlc3QuCisgICAgICAgICogeWFy
ci9ZYXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xh
c3NQYXJzZXJEZWxlZ2F0ZTo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZSk6CisgICAgICAg
IChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6YXRvbVBh
dHRlcm5DaGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OlBhcnNlcik6Cisg
ICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6aXNJZGVudGl0eUVzY2FwZUFuRXJyb3IpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6UGFyc2VyOjpwYXJzZUNoYXJhY3RlckNsYXNzKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFy
c2VyOjpwYXJzZVBhcmVudGhlc2VzQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6
OnBhcnNlUGFyZW50aGVzZXNFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNl
UXVhbnRpZmllcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VUb2tlbnMpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiB5YXJyL1lhcnJQ
YXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6
ZGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9y
OjpzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3I6OnNldHVwT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQ
YXR0ZXJuOjplcnJvck1lc3NhZ2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6
Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybjo6cmVzZXQpOgorCiAyMDE2LTA3LTE5ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3QyNjIgc2hvdWxkIGhhdmUgYSBm
aWxlIHdpdGggdGhlIHJldmlzaW9uIGFuZCB1cmwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjAzNDEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTM2LDcgKzUzNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
cmVnZXgKICAgICBMTElOVF9CRUdJTigpOwogICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29k
ZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOwogICAgIGlmICghcmVnRXhwLT5pc1Zh
bGlkKCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZh
bGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkp
OwogICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVncmVzcy0xNTk5NTQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE1
OTk1NC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvcmVncmVzcy0xNTk5NTQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorLy8g
UmVncmVzc2lvbiB0ZXN0IGZvciAxNTk5NTQuICBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaCBv
ciB0aHJvdyBhbiBleGNlcHRpb24uCisKK2Z1bmN0aW9uIHRlc3RSZWdFeHAocmVnZXhwRXhwcmVz
c2lvbikKK3sKKyAgICB0cnkgeworICAgICAgICBsZXQgcmVzdWx0ID0gZXZhbChyZWdleHBFeHBy
ZXNzaW9uKTsKKworICAgICAgICB0aHJvdyAiRXhwZWN0ZWQgXCIiICsgcmVnZXhwRXhwcmVzc2lv
biArICJcIiB0byB0aHJvdyBhbmQgaXQgZGlkbid0IjsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGlmIChlICE9ICJTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IHBh
dHRlcm4gZXhjZWVkcyBzdHJpbmcgbGVuZ3RoIGxpbWl0cyIpCisgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKK3Rlc3RSZWdFeHAoIi9hezIxNDc0
ODM2NDksMjE0NzQ4MzY1MH1hezIxNDc0ODM2NDksMjE0NzQ4MzY1MH0vLmV4ZWMoJ2FhYWEnKSIp
OwordGVzdFJlZ0V4cCgiL2F7MjE0NzQ4MzY0OSwyMTQ3NDgzNjUwfWF7MjE0NzQ4MzY0OSwyMTQ3
NDgzNjUwfS8uZXhlYygnYWEnKSIpOwordGVzdFJlZ0V4cCgiLyg/OlwxezIxNDc0ODM2NDksMjE0
NzQ4MzY1MH0pKy8uZXhlYygnMTIzJykiKTsKK3Rlc3RSZWdFeHAoIi8oW15dezIxNDc0ODM2NDgs
MjE0NzQ4MzY1MX0oPzouKXsyfSkrPy8uZXhlYygneHh4JykiKTsKK3Rlc3RSZWdFeHAoIi8oXHUw
MDA0XFdcdTBmMGIrPyRbXHhhN1x0XHQtXHVlMTE4XGZdezIxNDc0ODM2NDgsMjE0NzQ4MzY0OH0p
Ky4rPy91LmV4ZWMoJ3Rlc3RpbmcnKSIpOwordGVzdFJlZ0V4cCgiLyguezIxNDc0ODM2NDksMjE0
NzQ4MzY1Mn0pKz8vZy5leGVjKCd4eHgnKSIpOwordGVzdFJlZ0V4cCgiLyg/Oig/OltcRF17MjE0
NzQ4MzY0OX0pKz8uKSo/L2lnbXkuZXhlYygnMTIzXFxuMTIzJykiKTsKK3Rlc3RSZWdFeHAoIi8o
PzpcMXsyMTQ3NDgzNjQ4LH0pKz8vbS5leGVjKCd4eHgnKSIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAkocmV2aXNpb24gMjAzNDEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICsz
Miw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLSNkZWZpbmUgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICIKLQogZW51bSBC
dWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCB7CiAgICAgRGlnaXRDbGFzc0lELAogICAgIFNwYWNlQ2xh
c3NJRCwKQEAgLTQ4LDIzICs0Niw2IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRnJp
ZW5kRGVsZWdhdGU+CiAgICAgZnJpZW5kIGNvbnN0IGNoYXIqIHBhcnNlKEZyaWVuZERlbGVnYXRl
JiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5zaWduZWQgYmFja1Jl
ZmVyZW5jZUxpbWl0KTsKIAotICAgIGVudW0gRXJyb3JDb2RlIHsKLSAgICAgICAgTm9FcnJvciwK
LSAgICAgICAgUGF0dGVyblRvb0xhcmdlLAotICAgICAgICBRdWFudGlmaWVyT3V0T2ZPcmRlciwK
LSAgICAgICAgUXVhbnRpZmllcldpdGhvdXRBdG9tLAotICAgICAgICBRdWFudGlmaWVyVG9vTGFy
Z2UsCi0gICAgICAgIE1pc3NpbmdQYXJlbnRoZXNlcywKLSAgICAgICAgUGFyZW50aGVzZXNVbm1h
dGNoZWQsCi0gICAgICAgIFBhcmVudGhlc2VzVHlwZUludmFsaWQsCi0gICAgICAgIENoYXJhY3Rl
ckNsYXNzVW5tYXRjaGVkLAotICAgICAgICBDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXIsCi0gICAg
ICAgIEVzY2FwZVVudGVybWluYXRlZCwKLSAgICAgICAgSW52YWxpZFVuaWNvZGVFc2NhcGUsCi0g
ICAgICAgIEludmFsaWRJZGVudGl0eUVzY2FwZSwKLSAgICAgICAgTnVtYmVyT2ZFcnJvckNvZGVz
Ci0gICAgfTsKLQogICAgIC8qCiAgICAgICogQ2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZToK
ICAgICAgKgpAQCAtNzYsNyArNTcsNyBAQCBwcml2YXRlOgogICAgICAqLwogICAgIGNsYXNzIENo
YXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2hhcmFj
dGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIEVycm9yQ29kZSYgZXJy
KQorICAgICAgICBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKERlbGVnYXRlJiBkZWxlZ2F0
ZSwgWWFyclBhdHRlcm46OkVycm9yQ29kZSYgZXJyKQogICAgICAgICAgICAgOiBtX2RlbGVnYXRl
KGRlbGVnYXRlKQogICAgICAgICAgICAgLCBtX2VycihlcnIpCiAgICAgICAgICAgICAsIG1fc3Rh
dGUoRW1wdHkpCkBAIC0xMzgsNyArMTE5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2Fz
ZSBDYWNoZWRDaGFyYWN0ZXJIeXBoZW46CiAgICAgICAgICAgICAgICAgaWYgKGNoIDwgbV9jaGFy
YWN0ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBDaGFyYWN0ZXJDbGFzc091dE9m
T3JkZXI7CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkNoYXJhY3Rl
ckNsYXNzT3V0T2ZPcmRlcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2RlbGVnYXRlLmF0b21DaGFyYWN0ZXJDbGFzc1Jh
bmdlKG1fY2hhcmFjdGVyLCBjaCk7CkBAIC0yMTksNyArMjAwLDcgQEAgcHJpdmF0ZToKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIERlbGVnYXRlJiBtX2RlbGVnYXRlOwotICAgICAgICBFcnJvckNv
ZGUmIG1fZXJyOworICAgICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlJiBtX2VycjsKICAgICAg
ICAgZW51bSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKICAgICAgICAgICAgIEVt
cHR5LAogICAgICAgICAgICAgQ2FjaGVkQ2hhcmFjdGVyLApAQCAtMjMzLDcgKzIxNCw3IEBAIHBy
aXZhdGU6CiAgICAgUGFyc2VyKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0
ZXJuLCBib29sIGlzVW5pY29kZSwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KQogICAgICAg
ICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9iYWNrUmVmZXJlbmNlTGltaXQo
YmFja1JlZmVyZW5jZUxpbWl0KQotICAgICAgICAsIG1fZXJyKE5vRXJyb3IpCisgICAgICAgICwg
bV9lcnIoWWFyclBhdHRlcm46Ok5vRXJyb3IpCiAgICAgICAgICwgbV9kYXRhKHBhdHRlcm4uY2hh
cmFjdGVyczxDaGFyVHlwZT4oKSkKICAgICAgICAgLCBtX3NpemUocGF0dGVybi5sZW5ndGgoKSkK
ICAgICAgICAgLCBtX2luZGV4KDApCkBAIC0yNDgsNyArMjI5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzSWRlbnRpdHlFc2NhcGVBbkVycm9yKGludCBjaCkKICAgICB7CiAgICAgICAgIGlmICht
X2lzVW5pY29kZSAmJiAhc3RyY2hyKCJeJFxcLiorPygpW117fXwvIiwgY2gpKSB7Ci0gICAgICAg
ICAgICBtX2VyciA9IEludmFsaWRJZGVudGl0eUVzY2FwZTsKKyAgICAgICAgICAgIG1fZXJyID0g
WWFyclBhdHRlcm46OkludmFsaWRJZGVudGl0eUVzY2FwZTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKQEAgLTI4Myw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgICAgICBj
b25zdW1lKCk7CiAKICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkpIHsKLSAgICAgICAgICAg
IG1fZXJyID0gRXNjYXBlVW50ZXJtaW5hdGVkOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0
dGVybjo6RXNjYXBlVW50ZXJtaW5hdGVkOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKQEAgLTQ0OSwxOSArNDMwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
VUNoYXIzMiBjb2RlUG9pbnQgPSAwOwogICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzQVNDSUlIZXhEaWdpdChwZWVrKCkp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEludmFsaWRVbmljb2RlRXNjYXBl
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVu
aWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNvZGVQb2ludCA9IChjb2RlUG9pbnQg
PDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICBpZiAoY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9lcnIgPSBJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOwogICAgICAgICAgICAg
ICAgIH0gd2hpbGUgKCFhdEVuZE9mUGF0dGVybigpICYmIHBlZWsoKSAhPSAnfScpOwogICAgICAg
ICAgICAgICAgIGlmICghYXRFbmRPZlBhdHRlcm4oKSAmJiBwZWVrKCkgPT0gJ30nKQogICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIW1fZXJy
KQotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEludmFsaWRVbmljb2RlRXNjYXBlOworICAg
ICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2Fw
ZTsKICAgICAgICAgICAgICAgICBpZiAobV9lcnIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtNTgxLDcgKzU2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lcnIgPSBDaGFyYWN0ZXJDbGFzc1VubWF0
Y2hlZDsKKyAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6Q2hhcmFjdGVyQ2xhc3NVbm1hdGNo
ZWQ7CiAgICAgfQogCiAgICAgLyoKQEAgLTU5Nyw3ICs1NzgsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIGlmICh0cnlDb25zdW1lKCc/JykpIHsKICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVy
bigpKSB7Ci0gICAgICAgICAgICAgICAgbV9lcnIgPSBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkOwor
ICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBhcmVudGhlc2VzVHlwZUludmFs
aWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC02MTUsNyAr
NTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX2VyciA9IFBhcmVudGhlc2Vz
VHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGFyZW50
aGVzZXNUeXBlSW52YWxpZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbigpOwpAQCAtNjM3
LDcgKzYxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3BhcmVudGhlc2VzTmVzdGluZ0Rl
cHRoID4gMCkKICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbVBhcmVudGhlc2VzRW5kKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZXJyID0gUGFyZW50aGVzZXNVbm1hdGNoZWQ7Cisg
ICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1VubWF0Y2hlZDsKIAog
ICAgICAgICAtLW1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGg7CiAgICAgfQpAQCAtNjUzLDE0ICs2
MzQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1pbiA8PSBtYXgpOwogCiAgICAgICAg
IGlmIChtaW4gPT0gVUlOVF9NQVgpIHsKLSAgICAgICAgICAgIG1fZXJyID0gUXVhbnRpZmllclRv
b0xhcmdlOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllclRvb0xh
cmdlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxhc3RU
b2tlbldhc0FuQXRvbSkKICAgICAgICAgICAgIG1fZGVsZWdhdGUucXVhbnRpZnlBdG9tKG1pbiwg
bWF4LCAhdHJ5Q29uc3VtZSgnPycpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9lcnIg
PSBRdWFudGlmaWVyV2l0aG91dEF0b207CisgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJu
OjpRdWFudGlmaWVyV2l0aG91dEF0b207CiAgICAgfQogCiAgICAgLyoKQEAgLTc1NCw3ICs3MzUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8PSBtYXgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VRdWFudGlmaWVyKGxhc3RUb2tlbldhc0Fu
QXRvbSwgbWluLCBtYXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZXJyID0gUXVhbnRpZmllck91dE9mT3JkZXI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllck91dE9m
T3JkZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0VG9rZW5XYXNBbkF0b20gPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC03NzUsNyArNzU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
X3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoID4gMCkKLSAgICAgICAgICAgIG1fZXJyID0gTWlzc2lu
Z1BhcmVudGhlc2VzOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6TWlzc2luZ1Bh
cmVudGhlc2VzOwogICAgIH0KIAogICAgIC8qCkBAIC03ODcsMjkgKzc2OCwxMiBAQCBwcml2YXRl
OgogICAgIGNvbnN0IGNoYXIqIHBhcnNlKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUgPiBN
QVhfUEFUVEVSTl9TSVpFKQotICAgICAgICAgICAgbV9lcnIgPSBQYXR0ZXJuVG9vTGFyZ2U7Cisg
ICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXR0ZXJuVG9vTGFyZ2U7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBhcnNlVG9rZW5zKCk7CiAgICAgICAgIEFTU0VSVChhdEVuZE9m
UGF0dGVybigpIHx8IG1fZXJyKTsKLQotICAgICAgICAvLyBUaGUgb3JkZXIgb2YgdGhpcyBhcnJh
eSBtdXN0IG1hdGNoIHRoZSBFcnJvckNvZGUgZW51bS4KLSAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGVycm9yTWVzc2FnZXNbTnVtYmVyT2ZFcnJvckNvZGVzXSA9IHsKLSAgICAgICAgICAgIDAs
IC8vIE5vRXJyb3IKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInJlZ3VsYXIgZXhw
cmVzc2lvbiB0b28gbGFyZ2UiLAotICAgICAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibnVt
YmVycyBvdXQgb2Ygb3JkZXIgaW4ge30gcXVhbnRpZmllciIsCi0gICAgICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJlcGVhdCIsCi0gICAgICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXIiLAotICAgICAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibWlzc2luZyApIiwKLSAgICAgICAgICAgIFJFR0VYUF9F
UlJPUl9QUkVGSVggInVubWF0Y2hlZCBwYXJlbnRoZXNlcyIsCi0gICAgICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyIGFmdGVyICg/IiwKLSAgICAgICAg
ICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgdGVybWluYXRpbmcgXSBmb3IgY2hhcmFj
dGVyIGNsYXNzIiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInJhbmdlIG91dCBv
ZiBvcmRlciBpbiBjaGFyYWN0ZXIgY2xhc3MiLAotICAgICAgICAgICAgUkVHRVhQX0VSUk9SX1BS
RUZJWCAiXFwgYXQgZW5kIG9mIHBhdHRlcm4iLAotICAgICAgICAgICAgUkVHRVhQX0VSUk9SX1BS
RUZJWCAiaW52YWxpZCB1bmljb2RlIHt9IGVzY2FwZSIsCi0gICAgICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJpbnZhbGlkIGVzY2FwZWQgY2hhcmFjdGVyIGZvciB1bmljb2RlIHBhdHRlcm4i
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZXNbbV9lcnJdOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjplcnJvck1lc3NhZ2UobV9lcnIpOwog
ICAgIH0KIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9uczoKQEAgLTkxMyw3ICs4NzcsNyBA
QCBwcml2YXRlOgogCiAgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7CiAgICAgdW5zaWduZWQgbV9i
YWNrUmVmZXJlbmNlTGltaXQ7Ci0gICAgRXJyb3JDb2RlIG1fZXJyOworICAgIFlhcnJQYXR0ZXJu
OjpFcnJvckNvZGUgbV9lcnI7CiAgICAgY29uc3QgQ2hhclR5cGUqIG1fZGF0YTsKICAgICB1bnNp
Z25lZCBtX3NpemU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDIwMzQxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTc4LDEzICs1NzgsMTQgQEAgcHVibGljOgogICAgICAgICBtX2FsdGVybmF0aXZlID0gbV9hbHRl
cm5hdGl2ZS0+bV9wYXJlbnQtPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgfQogCi0gICAgYm9v
bCBzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cyhQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZl
LCB1bnNpZ25lZCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5pdGlhbElucHV0UG9z
aXRpb24sIHVuc2lnbmVkJiBuZXdDYWxsRnJhbWVTaXplKSBXQVJOX1VOVVNFRF9SRVRVUk4KKyAg
ICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIHNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzKFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHVuc2lnbmVkIGN1cnJlbnRDYWxsRnJhbWVTaXplLCB1
bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIG5ld0NhbGxGcmFtZVNpemUp
IFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVU
b1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm4gWWFyclBhdHRlcm46OlRvb01hbnlEaXNqdW5jdGlvbnM7CiAKKyAgICAgICAgWWFyclBhdHRl
cm46OkVycm9yQ29kZSBlcnJvciA9IFlhcnJQYXR0ZXJuOjpOb0Vycm9yOwogICAgICAgICBhbHRl
cm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSB0cnVlOwotICAgICAgICBDaGVja2VkPHVuc2lnbmVk
PiBjdXJyZW50SW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOworICAgICAgICBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY3VycmVudElucHV0UG9zaXRpb24gPSBp
bml0aWFsSW5wdXRQb3NpdGlvbjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFBhdHRlcm5U
ZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1fdGVybXNbaV07CkBAIC02MzksMjIgKzY0MCwyNSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlDb3VudCA9PSAxICYm
ICF0ZXJtLnBhcmVudGhlc2VzLmlzQ29weSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFj
a0luZm9QYXJlbnRoZXNlc09uY2U7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2V0dXBEaXNq
dW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxG
cmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRo
ZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0
aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgcXVhbnRpdHkgaXMgZml4ZWQsIHRoZW4gcHJlLWNoZWNr
IGl0cyBtaW5pbXVtIHNpemUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWlu
aW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJl
bnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
dGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhl
c2VzVGVybWluYWw7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2V0dXBEaXNqdW5jdGlvbk9m
ZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUs
IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2Fm
ZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAg
ICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZl
R2V0KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGVy
bS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRDYWxsRnJhbWVTaXplOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIXNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24sIDAsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBpZ25vcmVk
Q2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5w
YXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgMCwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0
KCksIGlnbm9yZWRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9QYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gRml4
ZWQgY291bnQgb2YgMSBjb3VsZCBiZSBhY2NlcHRlZCwgaWYgdGhleSBoYXZlIGEgZml4ZWQgc2l6
ZSAqQU5EKiBpZiBhbGwgYWx0ZXJuYXRpdmVzIGFyZSBvZiB0aGUgc2FtZSBsZW5ndGguCkBAIC02
NjQsOCArNjY4LDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZVBhcmVudGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0
aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAgICAgICAg
dGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENhbGxGcmFtZVNpemU7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5m
b1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgp
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0u
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplICsgWWFyclN0YWNr
U3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgY3VycmVudElucHV0
UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURv
dFN0YXJFbmNsb3N1cmU6CkBAIC02NzMsMTcgKzY3OCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5pdGlhbElucHV0UG9zaXRpb247CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VycmVudElu
cHV0UG9zaXRpb24uaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBZYXJy
UGF0dGVybjo6T2Zmc2V0VG9vTGFyZ2U7CiAgICAgICAgIH0KIAogICAgICAgICBhbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZSA9IChjdXJyZW50SW5wdXRQb3NpdGlvbiAtIGluaXRpYWxJbnB1dFBv
c2l0aW9uKS51bnNhZmVHZXQoKTsKICAgICAgICAgbmV3Q2FsbEZyYW1lU2l6ZSA9IGN1cnJlbnRD
YWxsRnJhbWVTaXplOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgIH0KIAotICAgIGJvb2wgc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMoUGF0dGVybkRpc2p1
bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgaW5pdGlhbENhbGxGcmFtZVNpemUsIHVuc2ln
bmVkIGluaXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCYgY2FsbEZyYW1lU2l6ZSkgV0FSTl9V
TlVTRURfUkVUVVJOCisgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBzZXR1cERpc2p1bmN0aW9u
T2Zmc2V0cyhQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCB1bnNpZ25lZCBpbml0aWFs
Q2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5pdGlhbElucHV0UG9zaXRpb24sIHVuc2lnbmVkJiBj
YWxsRnJhbWVTaXplKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vy
c2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gWWFy
clBhdHRlcm46OlRvb01hbnlEaXNqdW5jdGlvbnM7CiAKICAgICAgICAgaWYgKChkaXNqdW5jdGlv
biAhPSBtX3BhdHRlcm4ubV9ib2R5KSAmJiAoZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNp
emUoKSA+IDEpKQogICAgICAgICAgICAgaW5pdGlhbENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNr
U3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmU7CkBAIC02OTEsMTIgKzY5OCwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1JbnB1dFNpemUgPSBVSU5UX01BWDsKICAg
ICAgICAgdW5zaWduZWQgbWF4aW11bUNhbGxGcmFtZVNpemUgPSAwOwogICAgICAgICBib29sIGhh
c0ZpeGVkU2l6ZSA9IHRydWU7CisgICAgICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgZXJyb3Ig
PSBZYXJyUGF0dGVybjo6Tm9FcnJvcjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGFsdCA9IDA7
IGFsdCA8IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7CiAgICAg
ICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50QWx0
ZXJuYXRpdmVDYWxsRnJhbWVTaXplOwotICAgICAgICAgICAgaWYgKCFzZXR1cEFsdGVybmF0aXZl
T2Zmc2V0cyhhbHRlcm5hdGl2ZSwgaW5pdGlhbENhbGxGcmFtZVNpemUsIGluaXRpYWxJbnB1dFBv
c2l0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlcnJvciA9IHNldHVwQWx0ZXJuYXRpdmVPZmZz
ZXRzKGFsdGVybmF0aXZlLCBpbml0aWFsQ2FsbEZyYW1lU2l6ZSwgaW5pdGlhbElucHV0UG9zaXRp
b24sIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUpOworICAgICAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgIG1pbmltdW1J
bnB1dFNpemUgPSBzdGQ6Om1pbihtaW5pbXVtSW5wdXRTaXplLCBhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSk7CiAgICAgICAgICAgICBtYXhpbXVtQ2FsbEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KG1h
eGltdW1DYWxsRnJhbWVTaXplLCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKTsKICAg
ICAgICAgICAgIGhhc0ZpeGVkU2l6ZSAmPSBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemU7CkBA
IC03MTEsMTUgKzcyMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGRpc2p1bmN0aW9uLT5tX21pbmlt
dW1TaXplID0gbWluaW11bUlucHV0U2l6ZTsKICAgICAgICAgZGlzanVuY3Rpb24tPm1fY2FsbEZy
YW1lU2l6ZSA9IG1heGltdW1DYWxsRnJhbWVTaXplOwogICAgICAgICBjYWxsRnJhbWVTaXplID0g
bWF4aW11bUNhbGxGcmFtZVNpemU7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gZXJyb3I7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogc2V0dXBPZmZzZXRzKCkKICAgICB7
CiAgICAgICAgIC8vIEZJWE1FOiBZYXJyIHNob3VsZCBub3QgdXNlIHRoZSBzdGFjayB0byBoYW5k
bGUgc3VicGF0dGVybnMgKHJkYXI6Ly9wcm9ibGVtLzI2NDM2MzE0KS4KICAgICAgICAgdW5zaWdu
ZWQgaWdub3JlZENhbGxGcmFtZVNpemU7Ci0gICAgICAgIGlmICghc2V0dXBEaXNqdW5jdGlvbk9m
ZnNldHMobV9wYXR0ZXJuLm1fYm9keSwgMCwgMCwgaWdub3JlZENhbGxGcmFtZVNpemUpKQotICAg
ICAgICAgICAgcmV0dXJuIFJFR0VYUF9FUlJPUl9QUkVGSVggInRvbyBtYW55IG5lc3RlZCBkaXNq
dW5jdGlvbnMiOworICAgICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVycm9yID0gc2V0dXBE
aXNqdW5jdGlvbk9mZnNldHMobV9wYXR0ZXJuLm1fYm9keSwgMCwgMCwgaWdub3JlZENhbGxGcmFt
ZVNpemUpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gWWFyclBhdHRl
cm46OmVycm9yTWVzc2FnZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IApAQCAtODc4LDYgKzg4OCwzMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbnZlcnRQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uOwogfTsKIAorY29uc3QgY2hhciogWWFyclBhdHRlcm46OmVycm9yTWVz
c2FnZShZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVycm9yKQoreworI2RlZmluZSBSRUdFWFBfRVJS
T1JfUFJFRklYICJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogIgorICAgIC8vIFRoZSBvcmRl
ciBvZiB0aGlzIGFycmF5IG11c3QgbWF0Y2ggdGhlIEVycm9yQ29kZSBlbnVtLgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2VzW051bWJlck9mRXJyb3JDb2Rlc10gPSB7CisgICAg
ICAgIG51bGxwdHIsIC8vIE5vRXJyb3IKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAicmVn
dWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSIsCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
Im51bWJlcnMgb3V0IG9mIG9yZGVyIGluIHt9IHF1YW50aWZpZXIiLAorICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJlcGVhdCIsCisgICAgICAgIFJFR0VYUF9FUlJPUl9Q
UkVGSVggIm51bWJlciB0b28gbGFyZ2UgaW4ge30gcXVhbnRpZmllciIsCisgICAgICAgIFJFR0VY
UF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgKSIsCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
InVubWF0Y2hlZCBwYXJlbnRoZXNlcyIsCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInVu
cmVjb2duaXplZCBjaGFyYWN0ZXIgYWZ0ZXIgKD8iLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNoYXJhY3RlciBjbGFzcyIsCisgICAgICAg
IFJFR0VYUF9FUlJPUl9QUkVGSVggInJhbmdlIG91dCBvZiBvcmRlciBpbiBjaGFyYWN0ZXIgY2xh
c3MiLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJcXCBhdCBlbmQgb2YgcGF0dGVybiIs
CisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgdW5pY29kZSB7fSBlc2NhcGUi
LAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGVzY2FwZWQgY2hhcmFjdGVy
IGZvciB1bmljb2RlIHBhdHRlcm4iLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28g
bWFueSBuZXN0ZWQgZGlzanVuY3Rpb25zIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAi
cGF0dGVybiBleGNlZWRzIHN0cmluZyBsZW5ndGggbGltaXRzIgorICAgIH07CisKKyAgICByZXR1
cm4gZXJyb3JNZXNzYWdlc1tlcnJvcl07Cit9CisKIGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpj
b21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgdm9pZCogc3RhY2tMaW1pdCkKIHsK
ICAgICBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIGNvbnN0cnVjdG9yKCp0aGlzLCBzdGFja0xpbWl0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNp
b24gMjAzNDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiwyNyBAQCBzdHJ1Y3QgVGVybUNoYWluIHsKIHN0
cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29u
c3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncywgY29uc3QgY2hhcioqIGVycm9yLCB2b2lk
KiBzdGFja0xpbWl0ID0gbnVsbHB0cik7CiAKKyAgICBlbnVtIEVycm9yQ29kZSB7CisgICAgICAg
IE5vRXJyb3IsCisgICAgICAgIFBhdHRlcm5Ub29MYXJnZSwKKyAgICAgICAgUXVhbnRpZmllck91
dE9mT3JkZXIsCisgICAgICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKKyAgICAgICAgUXVhbnRp
ZmllclRvb0xhcmdlLAorICAgICAgICBNaXNzaW5nUGFyZW50aGVzZXMsCisgICAgICAgIFBhcmVu
dGhlc2VzVW5tYXRjaGVkLAorICAgICAgICBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkLAorICAgICAg
ICBDaGFyYWN0ZXJDbGFzc1VubWF0Y2hlZCwKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NPdXRPZk9y
ZGVyLAorICAgICAgICBFc2NhcGVVbnRlcm1pbmF0ZWQsCisgICAgICAgIEludmFsaWRVbmljb2Rl
RXNjYXBlLAorICAgICAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUsCisgICAgICAgIFRvb01hbnlE
aXNqdW5jdGlvbnMsCisgICAgICAgIE9mZnNldFRvb0xhcmdlLAorICAgICAgICBOdW1iZXJPZkVy
cm9yQ29kZXMKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvck1lc3Nh
Z2UoRXJyb3JDb2RlKTsKKwogICAgIHZvaWQgcmVzZXQoKQogICAgIHsKICAgICAgICAgbV9udW1T
dWJwYXR0ZXJucyA9IDA7Cg==
</data>
<flag name="review"
          id="307722"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284088</attachid>
            <date>2016-07-19 23:28:57 -0700</date>
            <delta_ts>2016-07-19 23:30:07 -0700</delta_ts>
            <desc>Patch for landing - exported YarrPattern::errorMessage</desc>
            <filename>159954-3.patch</filename>
            <type>text/plain</type>
            <size>22497</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNDQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE2LTA3LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoT25PdmVyZmxvdyBpbiBKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
OnNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQ
b3VsYWluLgorCisgICAgICAgIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwQWx0ZXJuYXRp
dmVPZmZzZXRzKCkgaXMgdXNpbmcgdGhlIGNoZWNrZWQgYXJpdGhtZXRpYyBjbGFzcworICAgICAg
ICBDaGVja2VkPD4sIGZvciBvZmZzZXQgY2FsY3VsYXRpb25zLiAgSG93ZXZlciB0aGUgZGVmYXVs
dCB1c2Ugd2lsbCBqdXN0IGNyYXNoIG9uCisgICAgICAgIG92ZXJmbG93LiAgSW5zdGVhZCB3ZSBz
aG91bGQgc3RvcCBwcm9jZXNzaW5nIGFuZCBwcm9wYWdhdGUgdGhlIGVycm9yIHVwIHRoZSBjYWxs
IHN0YWNrLgorCisgICAgICAgIENvbnNvbGlkYXRlZCBleHBsaWNpdCBlcnJvciBzdHJpbmcgd2l0
aCB0aGUgY29tbW9uIFJlZ0V4cCBwYXJzaW5nIGVycm9yIGxvZ2ljLgorICAgICAgICBNb3ZlZCB0
aGF0IGxvZ2ljIHRvIFlhcnJQYXR0ZXJuIGFzIHRoYXQgc2VlbXMgbGlrZSBhIGJldHRlciBjb21t
b24gcGxhY2UgdG8gcHV0IGl0LgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVncmVzcy0x
NTk5NTQuanM6IE5ldyB0ZXN0LgorICAgICAgICAqIHlhcnIvWWFyclBhcnNlci5oOgorICAgICAg
ICAoSlNDOjpZYXJyOjpQYXJzZXI6OkNoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGU6OkNoYXJh
Y3RlckNsYXNzUGFyc2VyRGVsZWdhdGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OkNo
YXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGU6OmF0b21QYXR0ZXJuQ2hhcmFjdGVyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6UGFyc2VyOjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJz
ZXI6OmlzSWRlbnRpdHlFc2NhcGVBbkVycm9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2Vy
OjpwYXJzZUVzY2FwZSk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VDaGFyYWN0
ZXJDbGFzcyk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VQYXJlbnRoZXNlc0Jl
Z2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVBhcmVudGhlc2VzRW5kKToK
KyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVF1YW50aWZpZXIpOgorICAgICAgICAo
SlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNlVG9rZW5zKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFy
c2VyOjpwYXJzZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmRpc2p1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBEaXNqdW5jdGlvbk9mZnNl
dHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpzZXR1cE9m
ZnNldHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKToK
KyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OmNvbXBpbGUpOgorICAgICAgICAqIHlh
cnIvWWFyclBhdHRlcm4uaDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OnJlc2V0
KToKKwogMjAxNi0wNy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFRoZSBkZWZhdWx0IHRlc3RpbmcgbW9kZSBzaG91bGQgbm90IGludm9sdmUgZGlzYWJsaW5n
IHRoZSBGVEwgSklUCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDIwMzQxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzcsNyArMTEzNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmUKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNf
Y2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rv
ci4iKSkpOworICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMzQxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNiw3ICs1MzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X3JlZ2V4CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMt
PmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKICAgICBpZiAoIXJlZ0V4cC0+
aXNWYWxpZCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAi
SW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdl
KCkpKTsKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ3Jlc3MtMTU5OTU0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVncmVz
cy0xNTk5NTQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3JlZ3Jlc3MtMTU5OTU0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAK
Ky8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgMTU5OTU0LiAgVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jh
c2ggb3IgdGhyb3cgYW4gZXhjZXB0aW9uLgorCitmdW5jdGlvbiB0ZXN0UmVnRXhwKHJlZ2V4cEV4
cHJlc3Npb24pCit7CisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGV2YWwocmVnZXhw
RXhwcmVzc2lvbik7CisKKyAgICAgICAgdGhyb3cgIkV4cGVjdGVkIFwiIiArIHJlZ2V4cEV4cHJl
c3Npb24gKyAiXCIgdG8gdGhyb3cgYW5kIGl0IGRpZG4ndCI7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBpZiAoZSAhPSAiU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9u
OiBwYXR0ZXJuIGV4Y2VlZHMgc3RyaW5nIGxlbmd0aCBsaW1pdHMiKQorICAgICAgICAgICAgdGhy
b3cgZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCit0ZXN0UmVnRXhwKCIvYXsy
MTQ3NDgzNjQ5LDIxNDc0ODM2NTB9YXsyMTQ3NDgzNjQ5LDIxNDc0ODM2NTB9Ly5leGVjKCdhYWFh
JykiKTsKK3Rlc3RSZWdFeHAoIi9hezIxNDc0ODM2NDksMjE0NzQ4MzY1MH1hezIxNDc0ODM2NDks
MjE0NzQ4MzY1MH0vLmV4ZWMoJ2FhJykiKTsKK3Rlc3RSZWdFeHAoIi8oPzpcMXsyMTQ3NDgzNjQ5
LDIxNDc0ODM2NTB9KSsvLmV4ZWMoJzEyMycpIik7Cit0ZXN0UmVnRXhwKCIvKFteXXsyMTQ3NDgz
NjQ4LDIxNDc0ODM2NTF9KD86Lil7Mn0pKz8vLmV4ZWMoJ3h4eCcpIik7Cit0ZXN0UmVnRXhwKCIv
KFx1MDAwNFxXXHUwZjBiKz8kW1x4YTdcdFx0LVx1ZTExOFxmXXsyMTQ3NDgzNjQ4LDIxNDc0ODM2
NDh9KSsuKz8vdS5leGVjKCd0ZXN0aW5nJykiKTsKK3Rlc3RSZWdFeHAoIi8oLnsyMTQ3NDgzNjQ5
LDIxNDc0ODM2NTJ9KSs/L2cuZXhlYygneHh4JykiKTsKK3Rlc3RSZWdFeHAoIi8oPzooPzpbXERd
ezIxNDc0ODM2NDl9KSs/LikqPy9pZ215LmV4ZWMoJzEyM1xcbjEyMycpIik7Cit0ZXN0UmVnRXhw
KCIvKD86XDF7MjE0NzQ4MzY0OCx9KSs/L20uZXhlYygneHh4JykiKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgJKHJldmlzaW9uIDIwMzQxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
OCArMzIsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCi0jZGVmaW5l
IFJFR0VYUF9FUlJPUl9QUkVGSVggIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiCi0KIGVu
dW0gQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQgewogICAgIERpZ2l0Q2xhc3NJRCwKICAgICBTcGFj
ZUNsYXNzSUQsCkBAIC00OCwyMyArNDYsNiBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNz
IEZyaWVuZERlbGVnYXRlPgogICAgIGZyaWVuZCBjb25zdCBjaGFyKiBwYXJzZShGcmllbmREZWxl
Z2F0ZSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJh
Y2tSZWZlcmVuY2VMaW1pdCk7CiAKLSAgICBlbnVtIEVycm9yQ29kZSB7Ci0gICAgICAgIE5vRXJy
b3IsCi0gICAgICAgIFBhdHRlcm5Ub29MYXJnZSwKLSAgICAgICAgUXVhbnRpZmllck91dE9mT3Jk
ZXIsCi0gICAgICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKLSAgICAgICAgUXVhbnRpZmllclRv
b0xhcmdlLAotICAgICAgICBNaXNzaW5nUGFyZW50aGVzZXMsCi0gICAgICAgIFBhcmVudGhlc2Vz
VW5tYXRjaGVkLAotICAgICAgICBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkLAotICAgICAgICBDaGFy
YWN0ZXJDbGFzc1VubWF0Y2hlZCwKLSAgICAgICAgQ2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVyLAot
ICAgICAgICBFc2NhcGVVbnRlcm1pbmF0ZWQsCi0gICAgICAgIEludmFsaWRVbmljb2RlRXNjYXBl
LAotICAgICAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUsCi0gICAgICAgIE51bWJlck9mRXJyb3JD
b2RlcwotICAgIH07Ci0KICAgICAvKgogICAgICAqIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdh
dGU6CiAgICAgICoKQEAgLTc2LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICAgKi8KICAgICBjbGFz
cyBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENo
YXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGUoRGVsZWdhdGUmIGRlbGVnYXRlLCBFcnJvckNvZGUm
IGVycikKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZShEZWxlZ2F0ZSYgZGVs
ZWdhdGUsIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUmIGVycikKICAgICAgICAgICAgIDogbV9kZWxl
Z2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgICAgICwgbV9lcnIoZXJyKQogICAgICAgICAgICAgLCBt
X3N0YXRlKEVtcHR5KQpAQCAtMTM4LDcgKzExOSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IGNhc2UgQ2FjaGVkQ2hhcmFjdGVySHlwaGVuOgogICAgICAgICAgICAgICAgIGlmIChjaCA8IG1f
Y2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZXJyID0gQ2hhcmFjdGVyQ2xhc3NP
dXRPZk9yZGVyOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpDaGFy
YWN0ZXJDbGFzc091dE9mT3JkZXI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xh
c3NSYW5nZShtX2NoYXJhY3RlciwgY2gpOwpAQCAtMjE5LDcgKzIwMCw3IEBAIHByaXZhdGU6CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsKLSAgICAgICAgRXJy
b3JDb2RlJiBtX2VycjsKKyAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSYgbV9lcnI7CiAg
ICAgICAgIGVudW0gQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZSB7CiAgICAgICAgICAg
ICBFbXB0eSwKICAgICAgICAgICAgIENhY2hlZENoYXJhY3RlciwKQEAgLTIzMyw3ICsyMTQsNyBA
QCBwcml2YXRlOgogICAgIFBhcnNlcihEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYg
cGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCkKICAg
ICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAsIG1fYmFja1JlZmVyZW5jZUxp
bWl0KGJhY2tSZWZlcmVuY2VMaW1pdCkKLSAgICAgICAgLCBtX2VycihOb0Vycm9yKQorICAgICAg
ICAsIG1fZXJyKFlhcnJQYXR0ZXJuOjpOb0Vycm9yKQogICAgICAgICAsIG1fZGF0YShwYXR0ZXJu
LmNoYXJhY3RlcnM8Q2hhclR5cGU+KCkpCiAgICAgICAgICwgbV9zaXplKHBhdHRlcm4ubGVuZ3Ro
KCkpCiAgICAgICAgICwgbV9pbmRleCgwKQpAQCAtMjQ4LDcgKzIyOSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0lkZW50aXR5RXNjYXBlQW5FcnJvcihpbnQgY2gpCiAgICAgewogICAgICAgICBp
ZiAobV9pc1VuaWNvZGUgJiYgIXN0cmNocigiXiRcXC4qKz8oKVtde318LyIsIGNoKSkgewotICAg
ICAgICAgICAgbV9lcnIgPSBJbnZhbGlkSWRlbnRpdHlFc2NhcGU7CisgICAgICAgICAgICBtX2Vy
ciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkSWRlbnRpdHlFc2NhcGU7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0yODMsNyArMjY0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpKSB7Ci0gICAgICAg
ICAgICBtX2VyciA9IEVzY2FwZVVudGVybWluYXRlZDsKKyAgICAgICAgICAgIG1fZXJyID0gWWFy
clBhdHRlcm46OkVzY2FwZVVudGVybWluYXRlZDsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCkBAIC00NDksMTkgKzQzMCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIFVDaGFyMzIgY29kZVBvaW50ID0gMDsKICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFpc0FTQ0lJSGV4RGlnaXQocGVl
aygpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBJbnZhbGlkVW5pY29kZUVz
Y2FwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFs
aWRVbmljb2RlRXNjYXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBjb2RlUG9pbnQgPSAoY29kZVBv
aW50IDw8IDQpIHwgdG9BU0NJSUhleFZhbHVlKGNvbnN1bWUoKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZXJyID0gSW52YWxpZFVuaWNvZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKICAgICAgICAg
ICAgICAgICB9IHdoaWxlICghYXRFbmRPZlBhdHRlcm4oKSAmJiBwZWVrKCkgIT0gJ30nKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWF0RW5kT2ZQYXR0ZXJuKCkgJiYgcGVlaygpID09ICd9JykKICAg
ICAgICAgICAgICAgICAgICAgY29uc3VtZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFt
X2VycikKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBJbnZhbGlkVW5pY29kZUVzY2FwZTsK
KyAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVF
c2NhcGU7CiAgICAgICAgICAgICAgICAgaWYgKG1fZXJyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTU4MSw3ICs1NjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZXJyID0gQ2hhcmFjdGVyQ2xhc3NV
bm1hdGNoZWQ7CisgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkNoYXJhY3RlckNsYXNzVW5t
YXRjaGVkOwogICAgIH0KIAogICAgIC8qCkBAIC01OTcsNyArNTc4LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBpZiAodHJ5Q29uc3VtZSgnPycpKSB7CiAgICAgICAgICAgICBpZiAoYXRFbmRPZlBh
dHRlcm4oKSkgewotICAgICAgICAgICAgICAgIG1fZXJyID0gUGFyZW50aGVzZXNUeXBlSW52YWxp
ZDsKKyAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1R5cGVJ
bnZhbGlkOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNjE1
LDcgKzU5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9lcnIgPSBQYXJlbnRo
ZXNlc1R5cGVJbnZhbGlkOworICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBh
cmVudGhlc2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oKTsKQEAg
LTYzNyw3ICs2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9wYXJlbnRoZXNlc05lc3Rp
bmdEZXB0aCA+IDApCiAgICAgICAgICAgICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc0VuZCgp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2VyciA9IFBhcmVudGhlc2VzVW5tYXRjaGVk
OworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGFyZW50aGVzZXNVbm1hdGNoZWQ7
CiAKICAgICAgICAgLS1tX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoOwogICAgIH0KQEAgLTY1Mywx
NCArNjM0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtaW4gPD0gbWF4KTsKIAogICAg
ICAgICBpZiAobWluID09IFVJTlRfTUFYKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFF1YW50aWZp
ZXJUb29MYXJnZTsKKyAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlF1YW50aWZpZXJU
b29MYXJnZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChs
YXN0VG9rZW5XYXNBbkF0b20pCiAgICAgICAgICAgICBtX2RlbGVnYXRlLnF1YW50aWZ5QXRvbSht
aW4sIG1heCwgIXRyeUNvbnN1bWUoJz8nKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
ZXJyID0gUXVhbnRpZmllcldpdGhvdXRBdG9tOworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0
dGVybjo6UXVhbnRpZmllcldpdGhvdXRBdG9tOwogICAgIH0KIAogICAgIC8qCkBAIC03NTQsNyAr
NzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4gPD0gbWF4
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUXVhbnRpZmllcihsYXN0VG9rZW5X
YXNBbkF0b20sIG1pbiwgbWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFF1YW50aWZpZXJPdXRPZk9yZGVyOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlF1YW50aWZpZXJP
dXRPZk9yZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFRva2VuV2FzQW5BdG9tID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtNzc1LDcgKzc1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobV9wYXJlbnRoZXNlc05lc3RpbmdEZXB0aCA+IDApCi0gICAgICAgICAgICBtX2VyciA9IE1p
c3NpbmdQYXJlbnRoZXNlczsKKyAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Ok1pc3Np
bmdQYXJlbnRoZXNlczsKICAgICB9CiAKICAgICAvKgpAQCAtNzg3LDI5ICs3NjgsMTIgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiBwYXJzZSgpCiAgICAgewogICAgICAgICBpZiAobV9zaXpl
ID4gTUFYX1BBVFRFUk5fU0laRSkKLSAgICAgICAgICAgIG1fZXJyID0gUGF0dGVyblRvb0xhcmdl
OworICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGF0dGVyblRvb0xhcmdlOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBwYXJzZVRva2VucygpOwogICAgICAgICBBU1NFUlQoYXRF
bmRPZlBhdHRlcm4oKSB8fCBtX2Vycik7Ci0KLSAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHRoaXMg
YXJyYXkgbXVzdCBtYXRjaCB0aGUgRXJyb3JDb2RlIGVudW0uCi0gICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2VzW051bWJlck9mRXJyb3JDb2Rlc10gPSB7Ci0gICAgICAgICAg
ICAwLCAvLyBOb0Vycm9yCi0gICAgICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyZWd1bGFy
IGV4cHJlc3Npb24gdG9vIGxhcmdlIiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
Im51bWJlcnMgb3V0IG9mIG9yZGVyIGluIHt9IHF1YW50aWZpZXIiLAotICAgICAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAibm90aGluZyB0byByZXBlYXQiLAotICAgICAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibnVtYmVyIHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyIiwKLSAgICAg
ICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgKSIsCi0gICAgICAgICAgICBSRUdF
WFBfRVJST1JfUFJFRklYICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLAotICAgICAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAidW5yZWNvZ25pemVkIGNoYXJhY3RlciBhZnRlciAoPyIsCi0gICAg
ICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNo
YXJhY3RlciBjbGFzcyIsCi0gICAgICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBv
dXQgb2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzIiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJP
Ul9QUkVGSVggIlxcIGF0IGVuZCBvZiBwYXR0ZXJuIiwKLSAgICAgICAgICAgIFJFR0VYUF9FUlJP
Ul9QUkVGSVggImludmFsaWQgdW5pY29kZSB7fSBlc2NhcGUiLAotICAgICAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVkIGNoYXJhY3RlciBmb3IgdW5pY29kZSBwYXR0
ZXJuIgotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2VzW21fZXJyXTsK
KyAgICAgICAgCisgICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKG1fZXJy
KTsKICAgICB9CiAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnM6CkBAIC05MTMsNyArODc3
LDcgQEAgcHJpdmF0ZToKIAogICAgIERlbGVnYXRlJiBtX2RlbGVnYXRlOwogICAgIHVuc2lnbmVk
IG1fYmFja1JlZmVyZW5jZUxpbWl0OwotICAgIEVycm9yQ29kZSBtX2VycjsKKyAgICBZYXJyUGF0
dGVybjo6RXJyb3JDb2RlIG1fZXJyOwogICAgIGNvbnN0IENoYXJUeXBlKiBtX2RhdGE7CiAgICAg
dW5zaWduZWQgbV9zaXplOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMDM0MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3OCwxMyArNTc4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IG1f
YWx0ZXJuYXRpdmUtPm1fcGFyZW50LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgIH0KIAotICAg
IGJvb2wgc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMoUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5h
dGl2ZSwgdW5zaWduZWQgY3VycmVudENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGluaXRpYWxJbnB1
dFBvc2l0aW9uLCB1bnNpZ25lZCYgbmV3Q2FsbEZyYW1lU2l6ZSkgV0FSTl9VTlVTRURfUkVUVVJO
CisgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cyhQYXR0
ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlLCB1bnNpZ25lZCBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSwgdW5zaWduZWQgaW5pdGlhbElucHV0UG9zaXRpb24sIHVuc2lnbmVkJiBuZXdDYWxsRnJhbWVT
aXplKSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNT
YWZlVG9SZWN1cnNlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIFlhcnJQYXR0ZXJuOjpUb29NYW55RGlzanVuY3Rpb25zOwogCisgICAgICAgIFlhcnJQ
YXR0ZXJuOjpFcnJvckNvZGUgZXJyb3IgPSBZYXJyUGF0dGVybjo6Tm9FcnJvcjsKICAgICAgICAg
YWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gdHJ1ZTsKLSAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gY3VycmVudElucHV0UG9zaXRpb24gPSBpbml0aWFsSW5wdXRQb3NpdGlvbjsKKyAgICAg
ICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGN1cnJlbnRJbnB1dFBvc2l0aW9u
ID0gaW5pdGlhbElucHV0UG9zaXRpb247CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFsdGVybmF0aXZlLT5tX3Rlcm1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBQYXR0
ZXJuVGVybSYgdGVybSA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zW2ldOwpAQCAtNjM5LDIyICs2NDAs
MjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5Q291bnQgPT0g
MSAmJiAhdGVybS5wYXJlbnRoZXNlcy5pc0NvcHkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KQogICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHVw
RGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRD
YWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENh
bGxGcmFtZVNpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFy
ZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQ
b3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHF1YW50aXR5IGlzIGZpeGVkLCB0aGVuIHByZS1j
aGVjayBpdHMgbWluaW11bSBzaXplLgogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFu
dGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5t
X21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBj
dXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHRlcm0ucGFyZW50aGVzZXMuaXNUZXJtaW5hbCkgewogICAgICAgICAgICAgICAgICAgICBj
dXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJl
bnRoZXNlc1Rlcm1pbmFsOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHVwRGlzanVuY3Rp
b25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVT
aXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNp
emUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMu
ZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51
bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAg
ICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVu
c2FmZUdldCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwog
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhl
c2VzLmRpc2p1bmN0aW9uLCAwLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgaWdu
b3JlZENhbGxGcmFtZVNpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRl
cm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIDAsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2Fm
ZUdldCgpLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJh
Y2tJbmZvUGFyZW50aGVzZXM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8v
IEZpeGVkIGNvdW50IG9mIDEgY291bGQgYmUgYWNjZXB0ZWQsIGlmIHRoZXkgaGF2ZSBhIGZpeGVk
IHNpemUgKkFORCogaWYgYWxsIGFsdGVybmF0aXZlcyBhcmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgpA
QCAtNjY0LDggKzY2OCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQ
b3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAg
ICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwotICAgICAgICAg
ICAgICAgIGlmICghc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUgKyBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFj
a0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVH
ZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0
ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJT
dGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJ
bnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVEb3RTdGFyRW5jbG9zdXJlOgpAQCAtNjczLDE3ICs2NzgsMTkgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN1cnJl
bnRJbnB1dFBvc2l0aW9uLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
WWFyclBhdHRlcm46Ok9mZnNldFRvb0xhcmdlOwogICAgICAgICB9CiAKICAgICAgICAgYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUgPSAoY3VycmVudElucHV0UG9zaXRpb24gLSBpbml0aWFsSW5w
dXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CiAgICAgICAgIG5ld0NhbGxGcmFtZVNpemUgPSBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICB9CiAKLSAgICBib29sIHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKFBhdHRlcm5E
aXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVkIGluaXRpYWxDYWxsRnJhbWVTaXplLCB1
bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIGNhbGxGcmFtZVNpemUpIFdB
Uk5fVU5VU0VEX1JFVFVSTgorICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgc2V0dXBEaXNqdW5j
dGlvbk9mZnNldHMoUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgaW5p
dGlhbENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGluaXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25l
ZCYgY2FsbEZyYW1lU2l6ZSkKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9S
ZWN1cnNlKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
IFlhcnJQYXR0ZXJuOjpUb29NYW55RGlzanVuY3Rpb25zOwogCiAgICAgICAgIGlmICgoZGlzanVu
Y3Rpb24gIT0gbV9wYXR0ZXJuLm1fYm9keSkgJiYgKGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
cy5zaXplKCkgPiAxKSkKICAgICAgICAgICAgIGluaXRpYWxDYWxsRnJhbWVTaXplICs9IFlhcnJT
dGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlOwpAQCAtNjkxLDEyICs2OTgsMTQg
QEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBtaW5pbXVtSW5wdXRTaXplID0gVUlOVF9NQVg7
CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1DYWxsRnJhbWVTaXplID0gMDsKICAgICAgICAgYm9v
bCBoYXNGaXhlZFNpemUgPSB0cnVlOworICAgICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVy
cm9yID0gWWFyclBhdHRlcm46Ok5vRXJyb3I7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBhbHQg
PSAwOyBhbHQgPCBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2FsdCkgewog
ICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9u
LT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgpOwogICAgICAgICAgICAgdW5zaWduZWQgY3VycmVu
dEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgICAgIGlmICghc2V0dXBBbHRlcm5h
dGl2ZU9mZnNldHMoYWx0ZXJuYXRpdmUsIGluaXRpYWxDYWxsRnJhbWVTaXplLCBpbml0aWFsSW5w
dXRQb3NpdGlvbiwgY3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZXJyb3IgPSBzZXR1cEFsdGVybmF0aXZl
T2Zmc2V0cyhhbHRlcm5hdGl2ZSwgaW5pdGlhbENhbGxGcmFtZVNpemUsIGluaXRpYWxJbnB1dFBv
c2l0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKTsKKyAgICAgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICBtaW5p
bXVtSW5wdXRTaXplID0gc3RkOjptaW4obWluaW11bUlucHV0U2l6ZSwgYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemUpOwogICAgICAgICAgICAgbWF4aW11bUNhbGxGcmFtZVNpemUgPSBzdGQ6Om1h
eChtYXhpbXVtQ2FsbEZyYW1lU2l6ZSwgY3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSk7
CiAgICAgICAgICAgICBoYXNGaXhlZFNpemUgJj0gYWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXpl
OwpAQCAtNzExLDE1ICs3MjAsMTYgQEAgcHVibGljOgogICAgICAgICBkaXNqdW5jdGlvbi0+bV9t
aW5pbXVtU2l6ZSA9IG1pbmltdW1JbnB1dFNpemU7CiAgICAgICAgIGRpc2p1bmN0aW9uLT5tX2Nh
bGxGcmFtZVNpemUgPSBtYXhpbXVtQ2FsbEZyYW1lU2l6ZTsKICAgICAgICAgY2FsbEZyYW1lU2l6
ZSA9IG1heGltdW1DYWxsRnJhbWVTaXplOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGVycm9yOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIHNldHVwT2Zmc2V0cygpCiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogWWFyciBzaG91bGQgbm90IHVzZSB0aGUgc3RhY2sgdG8g
aGFuZGxlIHN1YnBhdHRlcm5zIChyZGFyOi8vcHJvYmxlbS8yNjQzNjMxNCkuCiAgICAgICAgIHVu
c2lnbmVkIGlnbm9yZWRDYWxsRnJhbWVTaXplOwotICAgICAgICBpZiAoIXNldHVwRGlzanVuY3Rp
b25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAsIGlnbm9yZWRDYWxsRnJhbWVTaXplKSkK
LSAgICAgICAgICAgIHJldHVybiBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28gbWFueSBuZXN0ZWQg
ZGlzanVuY3Rpb25zIjsKKyAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvciA9IHNl
dHVwRGlzanVuY3Rpb25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAsIGlnbm9yZWRDYWxs
RnJhbWVTaXplKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuIFlhcnJQ
YXR0ZXJuOjplcnJvck1lc3NhZ2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTg3OCw2ICs4ODgsMzEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW52ZXJ0UGFy
ZW50aGV0aWNhbEFzc2VydGlvbjsKIH07CiAKK2NvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjplcnJv
ck1lc3NhZ2UoWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvcikKK3sKKyNkZWZpbmUgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246ICIKKyAgICAvLyBUaGUg
b3JkZXIgb2YgdGhpcyBhcnJheSBtdXN0IG1hdGNoIHRoZSBFcnJvckNvZGUgZW51bS4KKyAgICBz
dGF0aWMgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlc1tOdW1iZXJPZkVycm9yQ29kZXNdID0gewor
ICAgICAgICBudWxscHRyLCAvLyBOb0Vycm9yCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
InJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJudW1iZXJzIG91dCBvZiBvcmRlciBpbiB7fSBxdWFudGlmaWVyIiwKKyAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAibm90aGluZyB0byByZXBlYXQiLAorICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXIiLAorICAgICAgICBS
RUdFWFBfRVJST1JfUFJFRklYICJtaXNzaW5nICkiLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyIGFmdGVyICg/IiwKKyAgICAgICAgUkVHRVhQX0VSUk9S
X1BSRUZJWCAibWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBjaGFyYWN0ZXIgY2xhc3MiLAorICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBvdXQgb2Ygb3JkZXIgaW4gY2hhcmFjdGVy
IGNsYXNzIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiXFwgYXQgZW5kIG9mIHBhdHRl
cm4iLAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIHVuaWNvZGUge30gZXNj
YXBlIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVkIGNoYXJh
Y3RlciBmb3IgdW5pY29kZSBwYXR0ZXJuIiwKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAi
dG9vIG1hbnkgbmVzdGVkIGRpc2p1bmN0aW9ucyIsCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVG
SVggInBhdHRlcm4gZXhjZWVkcyBzdHJpbmcgbGVuZ3RoIGxpbWl0cyIKKyAgICB9OworCisgICAg
cmV0dXJuIGVycm9yTWVzc2FnZXNbZXJyb3JdOworfQorCiBjb25zdCBjaGFyKiBZYXJyUGF0dGVy
bjo6Y29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQp
CiB7CiAgICAgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcigqdGhpcywgc3RhY2tM
aW1pdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJl
dmlzaW9uIDIwMzQxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsMjcgQEAgc3RydWN0IFRlcm1DaGFpbiB7
CiBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJu
KGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MsIGNvbnN0IGNoYXIqKiBlcnJvciwg
dm9pZCogc3RhY2tMaW1pdCA9IG51bGxwdHIpOwogCisgICAgZW51bSBFcnJvckNvZGUgeworICAg
ICAgICBOb0Vycm9yLAorICAgICAgICBQYXR0ZXJuVG9vTGFyZ2UsCisgICAgICAgIFF1YW50aWZp
ZXJPdXRPZk9yZGVyLAorICAgICAgICBRdWFudGlmaWVyV2l0aG91dEF0b20sCisgICAgICAgIFF1
YW50aWZpZXJUb29MYXJnZSwKKyAgICAgICAgTWlzc2luZ1BhcmVudGhlc2VzLAorICAgICAgICBQ
YXJlbnRoZXNlc1VubWF0Y2hlZCwKKyAgICAgICAgUGFyZW50aGVzZXNUeXBlSW52YWxpZCwKKyAg
ICAgICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQsCisgICAgICAgIENoYXJhY3RlckNsYXNzT3V0
T2ZPcmRlciwKKyAgICAgICAgRXNjYXBlVW50ZXJtaW5hdGVkLAorICAgICAgICBJbnZhbGlkVW5p
Y29kZUVzY2FwZSwKKyAgICAgICAgSW52YWxpZElkZW50aXR5RXNjYXBlLAorICAgICAgICBUb29N
YW55RGlzanVuY3Rpb25zLAorICAgICAgICBPZmZzZXRUb29MYXJnZSwKKyAgICAgICAgTnVtYmVy
T2ZFcnJvckNvZGVzCisgICAgfTsKKyAgICAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZShFcnJvckNvZGUpOworCiAgICAgdm9pZCByZXNldCgp
CiAgICAgewogICAgICAgICBtX251bVN1YnBhdHRlcm5zID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>