<?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>114313</bug_id>
          
          <creation_ts>2013-04-09 15:57:35 -0700</creation_ts>
          <short_desc>Web Inspector: CSS parser errors in the console should include column numbers</short_desc>
          <delta_ts>2015-03-11 23:39:54 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142581</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>burg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>872120</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-09 15:57:35 -0700</bug_when>
    <thetext>In order to jump to the correct place in source code that is potentially pretty printed, the error should include a line number and column number. Currently CSSParser::logError only includes the line number and doesn&apos;t include a column number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872122</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-04-09 15:58:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/13614327&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076073</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-10 14:06:01 -0700</bug_when>
    <thetext>I&apos;m looking at this right now because inline CSS warnings are always useless on minified CSS. Ben pointed me in the right direction and this looks very easy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076209</commentid>
    <comment_count>3</comment_count>
      <attachid>248393</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-10 21:01:06 -0700</bug_when>
    <thetext>Created attachment 248393
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076236</commentid>
    <comment_count>4</comment_count>
      <attachid>248393</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-10 22:23:20 -0700</bug_when>
    <thetext>Comment on attachment 248393
[PATCH] Proposed Fix

That seems correct to me, rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076251</commentid>
    <comment_count>5</comment_count>
      <attachid>248393</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-10 23:11:40 -0700</bug_when>
    <thetext>Comment on attachment 248393
[PATCH] Proposed Fix

Clearing flags on attachment: 248393

Committed r181367: &lt;http://trac.webkit.org/changeset/181367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076252</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-10 23:11:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076324</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-11 08:48:37 -0700</bug_when>
    <thetext>This seems to have cause 7 layout tests to crash:
https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK2%20(Tests)/r181367%20(2681)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076325</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-11 08:49:00 -0700</bug_when>
    <thetext>Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010d51539a WTFCrash + 42
1   com.apple.WebCore             	0x000000010efa34ea WebCore::CSSParser::currentLocation() + 170 (CSSParser.cpp:10495)
2   com.apple.WebCore             	0x000000010ef439d6 cssyyparse(WebCore::CSSParser*) + 66182 (.CSSGrammar.y:1856)
3   com.apple.WebCore             	0x000000010ef70f5a WebCore::CSSParser::parseSheet(WebCore::StyleSheetContents*, WTF::String const&amp;, int, int, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::CSSRuleSourceData&gt;, 0ul, WTF::CrashOnOverflow&gt;*, bool) + 1178 (CSSParser.cpp:451)
4   com.apple.WebCore             	0x000000011090c0eb WebCore::StyleSheetContents::parseStringAtLineAndColumn(WTF::String const&amp;, int, int, bool) + 123 (StyleSheetContents.cpp:325)
5   com.apple.WebCore             	0x000000010f7fd477 WebCore::InlineStyleSheetOwner::createSheet(WebCore::Element&amp;, WTF::String const&amp;) + 1255 (InlineStyleSheetOwner.cpp:149)
6   com.apple.WebCore             	0x000000010f7fcd04 WebCore::InlineStyleSheetOwner::createSheetFromTextContents(WebCore::Element&amp;) + 68 (InlineStyleSheetOwner.cpp:97)
7   com.apple.WebCore             	0x000000010f7fcf7b WebCore::InlineStyleSheetOwner::finishParsingChildren(WebCore::Element&amp;) + 59 (InlineStyleSheetOwner.cpp:92)
8   com.apple.WebCore             	0x000000010f68e80b WebCore::HTMLStyleElement::finishParsingChildren() + 43 (HTMLStyleElement.cpp:91)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076331</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-11 08:54:28 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 142581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076403</commentid>
    <comment_count>10</comment_count>
      <attachid>248441</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-11 12:41:06 -0700</bug_when>
    <thetext>Created attachment 248441
[PATCH] Proposed Fix

This addresses the ASSERT seen in css3/filters/filter-animation-from-none-multi-hw.html.

We need to have the token&apos;s start line/column, at the time currentLocation() is called we may have parsed past a newline and incremented m_columnOffsetForLine. So stash the token&apos;s column at the time we stash the token&apos;s line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076483</commentid>
    <comment_count>11</comment_count>
      <attachid>248441</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-11 16:04:28 -0700</bug_when>
    <thetext>Comment on attachment 248441
[PATCH] Proposed Fix

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

&gt; Source/WebCore/css/CSSParser.cpp:337
&gt; +    , m_tokenStartColumnNumber(0)
&gt;      , m_lastSelectorLineNumber(0)
&gt; +    , m_columnOffsetForLine(0)
&gt; +    , m_sheetStartLineNumber(0)
&gt; +    , m_sheetStartColumnNumber(0)

It’s better to initialize in the header; avoids a need to list everything twice. Especially appropriate when the initial value is simple and logical (just a 0) and not specific to any particular constructor.

&gt; Source/WebCore/css/CSSParser.cpp:11605
&gt; -            if (*currentCharacter&lt;SrcCharacterType&gt;() == &apos;\n&apos;)
&gt; +            if (*currentCharacter&lt;SrcCharacterType&gt;() == &apos;\n&apos;) {
&gt;                  ++m_lineNumber;
&gt; -            ++currentCharacter&lt;SrcCharacterType&gt;();
&gt; +                ++currentCharacter&lt;SrcCharacterType&gt;();
&gt; +                m_columnOffsetForLine = currentCharacterOffset();
&gt; +            } else
&gt; +                ++currentCharacter&lt;SrcCharacterType&gt;();

Could we use currentCharacterOffset() + 1 here and avoid having to repeat the ++currentCharacter?

&gt; Source/WebCore/css/CSSParser.cpp:11904
&gt; +        break;

Why add this break?

&gt; Source/WebCore/css/CSSParser.h:108
&gt; +    void parseSheet(StyleSheetContents*, const String&amp;, int startLineNumber, int startColumnNumber, RuleSourceDataList*, bool logErrors);

Should we use WTF::TextPosition here instead of separate integers?

&gt; Source/WebCore/css/CSSParser.h:467
&gt; +    inline unsigned currentCharacterOffset();

The inline keyword here has no effect. I suggest omitting it. We should remove it from those other lines too, later.

&gt; Source/WebCore/css/CSSParser.h:652
&gt; +    void logError(const String&amp; message, int lineNumber, int columnNumber);

Should we use WTF::TextPosition here instead of separate integers?

&gt; Source/WebCore/css/StyleSheetContents.h:65
&gt; +    bool parseStringAtLineAndColumn(const String&amp;, int startLineNumber, int startColumnNumber, bool createdByParser);

Should we use WTF::TextPosition here instead of separate integers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076500</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-11 17:34:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 248441 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248441&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:337
&gt; &gt; +    , m_tokenStartColumnNumber(0)
&gt; &gt;      , m_lastSelectorLineNumber(0)
&gt; &gt; +    , m_columnOffsetForLine(0)
&gt; &gt; +    , m_sheetStartLineNumber(0)
&gt; &gt; +    , m_sheetStartColumnNumber(0)
&gt; 
&gt; It’s better to initialize in the header; avoids a need to list everything
&gt; twice. Especially appropriate when the initial value is simple and logical
&gt; (just a 0) and not specific to any particular constructor.

Yes, I&apos;m just caught in the normal position of:

  - modernize the entire class at the same time           =&gt; ugly diff, clean file
  - modernize just my piece and leave the rest unmodified =&gt; clean diff, ugly file
  - match the existing style of the file with new changes =&gt; clean diff, clean file


&gt; &gt; Source/WebCore/css/CSSParser.cpp:11605
&gt; &gt; -            if (*currentCharacter&lt;SrcCharacterType&gt;() == &apos;\n&apos;)
&gt; &gt; +            if (*currentCharacter&lt;SrcCharacterType&gt;() == &apos;\n&apos;) {
&gt; &gt;                  ++m_lineNumber;
&gt; &gt; -            ++currentCharacter&lt;SrcCharacterType&gt;();
&gt; &gt; +                ++currentCharacter&lt;SrcCharacterType&gt;();
&gt; &gt; +                m_columnOffsetForLine = currentCharacterOffset();
&gt; &gt; +            } else
&gt; &gt; +                ++currentCharacter&lt;SrcCharacterType&gt;();
&gt; 
&gt; Could we use currentCharacterOffset() + 1 here and avoid having to repeat
&gt; the ++currentCharacter?

I originally had that and ran into issues. However I changed a lot since then so I&apos;ll retry and go with that approach if it works.


&gt; &gt; Source/WebCore/css/CSSParser.cpp:11904
&gt; &gt; +        break;
&gt; 
&gt; Why add this break?

Though not a specific WebKit style, the majority of our switches include a break in the default case. It is not required.


I agree with the other comments, and I&apos;ll address them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076556</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-11 21:49:59 -0700</bug_when>
    <thetext>https://trac.webkit.org/r181426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076574</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-11 23:39:54 -0700</bug_when>
    <thetext>Follow-up fix for ASSERT seen in LayoutTests/printing/page-format-data.html.
https://trac.webkit.org/r181434</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248393</attachid>
            <date>2015-03-10 21:01:06 -0700</date>
            <delta_ts>2015-03-11 12:41:06 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>inline.patch</filename>
            <type>text/plain</type>
            <size>22929</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyY2JjNWJkLi5mNzQ5YzAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMt
MTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBDU1MgcGFyc2VyIGVycm9ycyBpbiB0aGUgY29uc29sZSBzaG91bGQgaW5jbHVk
ZSBjb2x1bW4gbnVtYmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE0MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCBlcnJvcnMgaW4gYm90aCBleHRlcm5hbCBhbmQgaW5saW5lIENTUyBhbmQg
U2NyaXB0cyB0byBlbnN1cmUgdGhleSBoYXZlCisgICAgICAgIGV4cGVjdGVkIGxpbmU6Y29sdW1u
IGluZm9ybWF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2Fy
bmluZ3MtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXBy
b3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvZXJyb3JzLmNzczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9lcnJvcnMuanM6IEFkZGVkLgorCiAyMDE1LTAz
LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IFJlYmFzZWxpbmUgdGVzdHMgYWZlciByMTgxMjkyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9jb25zb2xlL3dhcm5pbmdzLWVycm9ycy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc0M2JmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9jb25zb2xl
L3dhcm5pbmdzLWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IGVycm9yIHNjcmlwdAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IHdh
cm4gc2NyaXB0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogZXJyb3Igc2NyaXB0CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjogd2FybiBzY3JpcHQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTog
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnW10ueC54
JykKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogd2FybiAxCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTc6IGVycm9yIDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxODogZXJyb3IgMgorVGVzdHMg
dGhhdCBDU1MvSmF2YVNjcmlwdCBlcnJvcnMgYW5kIHdhcm5pbmdzIGFyZSBzZW50IHRvIHRoZSBj
b25zb2xlIHdpdGggbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uLgoreyJzb3VyY2UiOiJjc3Mi
LCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkgZGVjbGFyYXRp
b24gYXQ6ICoiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjU6MjAifQoreyJzb3Vy
Y2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkg
ZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjY6MTQi
fQoreyJzb3VyY2UiOiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1Mg
cHJvcGVydHkgZGVjbGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5o
dG1sOjc6NyJ9Cit7InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZh
bGlkIENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoid2FybmluZ3Mt
ZXJyb3JzLmh0bWw6OTo4In0KK3sic291cmNlIjoiY3NzIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4
dCI6IkludmFsaWQgQ1NTIHByb3BlcnR5IGRlY2xhcmF0aW9uIGF0OiAqIiwibG9jYXRpb24iOiJl
cnJvcnMuY3NzOjE6NyJ9Cit7InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQi
OiJJbnZhbGlkIENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoiZXJy
b3JzLmNzczoxOjI5In0KK3sic291cmNlIjoiY3NzIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6
IkludmFsaWQgQ1NTIHByb3BlcnR5IGRlY2xhcmF0aW9uIGF0OiAqIiwibG9jYXRpb24iOiJlcnJv
cnMuY3NzOjQ6NSJ9Cit7InNvdXJjZSI6ImNvbnNvbGUtYXBpIiwibGV2ZWwiOiJlcnJvciIsInRl
eHQiOiJlcnJvciBzY3JpcHQiLCJsb2NhdGlvbiI6ImVycm9ycy5qczoxOjE0IiwicGFyYW1ldGVy
cyI6W3sidHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6
Indhcm5pbmciLCJ0ZXh0Ijoid2FybiBzY3JpcHQiLCJsb2NhdGlvbiI6ImVycm9ycy5qczoxOjQ0
IiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1h
cGkiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6ImVycm9yIHNjcmlwdCIsImxvY2F0aW9uIjoiZXJy
b3JzLmpzOjU6MTgiLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1dfQoreyJzb3VyY2Ui
OiJjb25zb2xlLWFwaSIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJ3YXJuIHNjcmlwdCIsImxv
Y2F0aW9uIjoiZXJyb3JzLmpzOjY6MTciLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1d
fQoreyJzb3VyY2UiOiJqYXZhc2NyaXB0IiwibGV2ZWwiOiJlcnJvciIsInRleHQiOiJUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdbXS54LngnKSIsImxv
Y2F0aW9uIjoid2FybmluZ3MtZXJyb3JzLmh0bWw6MTU6MTgifQoreyJzb3VyY2UiOiJjb25zb2xl
LWFwaSIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJ3YXJuIDEiLCJsb2NhdGlvbiI6Indhcm5p
bmdzLWVycm9ycy5odG1sOjE3OjEzIiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9XX0K
K3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6ImVycm9yIDEi
LCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjE3OjM4IiwicGFyYW1ldGVycyI6W3si
dHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6ImVycm9y
IiwidGV4dCI6ImVycm9yIDIiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjE4OjE3
IiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9XX0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvY29uc29sZS93YXJuaW5ncy1lcnJvcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWFiZmNjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2FybmluZ3Mt
ZXJyb3JzLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vcmVzb3VyY2VzL2Vycm9ycy5jc3MiPgorICA8c3R5bGU+ICAgIGRp
diB7ICogY29sb3I6IHJlZDsgfTwvc3R5bGU+Cis8c3R5bGU+ZGl2IHsgKiBjb2xvcjogcmVkOyB9
CitkaXYgeyAqIGNvbG9yOiByZWQ7IH0KKyAgIGRpdiB7CisgICAgICAgKgorICAgICAgIGNvbG9y
OgorICAgICAgIHJlZDsKKyAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2Vycm9ycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQ+ICAgW10ueC54ICAgPC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc29sZS53
YXJuKCJ3YXJuIDEiKTsgY29uc29sZS5lcnJvcigiZXJyb3IgMSIpOworICAgY29uc29sZS5lcnJv
cigiZXJyb3IgMiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3JpcHQoIi4uLy4uLy4uLy4uL2luc3BlY3Rvci1wcm90
b2NvbC9yZXNvdXJjZXMvY29uc29sZS1oZWxwZXIuanMiKTsKKworICAgIEluc3BlY3RvclRlc3Qu
c2VuZENvbW1hbmQoIkNvbnNvbGUuZW5hYmxlIiwge30pOworCisgICAgdmFyIGNvbnNvbGVNZXNz
YWdlQ291bnQgPSAwOworICAgIGNvbnN0IGV4cGVjdGVkQ29uc29sZU1lc3NhZ2VzID0gMTU7CisK
KyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiQ29uc29sZS5tZXNzYWdlQWRkZWQiXSA9
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgc2ltcGxpZmllZE1l
c3NhZ2UgPSBDb25zb2xlSGVscGVyLnNpbXBsaWZpZWRDb25zb2xlTWVzc2FnZShtZXNzYWdlT2Jq
ZWN0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coSlNPTi5zdHJpbmdpZnkoc2ltcGxpZmll
ZE1lc3NhZ2UpKTsKKworICAgICAgICBpZiAoKytjb25zb2xlTWVzc2FnZUNvdW50ID09PSBleHBl
Y3RlZENvbnNvbGVNZXNzYWdlcykKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgQ1NTL0phdmFTY3JpcHQgZXJyb3JzIGFuZCB3YXJuaW5n
cyBhcmUgc2VudCB0byB0aGUgY29uc29sZSB3aXRoIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlv
bi48YnI+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL2Vycm9ycy5jc3MgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL2Vycm9ycy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjg1YjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvZXJyb3JzLmNzcwpAQCAtMCwwICsxLDcgQEAKK2Rp
diB7ICogY29sb3I6IHJlZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KKworZGl2IHsKKyAgICAq
CisgICAgY29sb3I6CisgICAgcmVkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL3Jlc291cmNlcy9lcnJvcnMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvcmVzb3VyY2VzL2Vycm9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kNDM3ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL3Jlc291cmNlcy9lcnJvcnMuanMKQEAgLTAsMCArMSw5IEBACitjb25zb2xlLmVy
cm9yKCJlcnJvciBzY3JpcHQiKTsgY29uc29sZS53YXJuKCJ3YXJuIHNjcmlwdCIpOworCisKK2Z1
bmN0aW9uIGZvbygpIHsKKyAgICBjb25zb2xlLmVycm9yKCJlcnJvciBzY3JpcHQiKTsKKyAgICBj
b25zb2xlLndhcm4oIndhcm4gc2NyaXB0Iik7Cit9CisKK2ZvbygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc4
NDJiMzMuLjQzZmY4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxNS0wMy0xMCAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IENTUyBwYXJzZXIgZXJyb3JzIGluIHRoZSBjb25zb2xlIHNob3VsZCBpbmNsdWRlIGNv
bHVtbiBudW1iZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTQzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBpbnNwZWN0b3ItcHJvdG9jb2wvY29uc29sZS93YXJuaW5ncy1lcnJvcnMuaHRt
bAorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjdXJyZW50Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgR2V0IHRoZSBjdXJyZW50IGNo
YXJhY3RlciBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgdHlwZS4KKyAgICAgICAgQWRk
IGluc3RhbmNlIHZhcmlhYmxlcyB0byB0cmFjayBjb2x1bW4gcG9zaXRpb24gYW5kIHN0YXJ0Cisg
ICAgICAgIGxpbmUgLyBjb2x1bW4gZm9yIGlubGluZSBzdHlsZXNoZWV0cy4KKworICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoZWV0KToKKyAgICAgICAg
SW5pdGlhbGl6ZSBuZXcgaW5zdGFuY2UgdmFyaWFibGVzLgorCisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmN1cnJlbnRMb2NhdGlvbik6CisgICAgICAgIFVwZGF0ZSB0byBpbmNsdWRlIGNv
bHVtbiBpbmZvcm1hdGlvbi4gQWxzbywgaWYgd2UgYXJlIG9uIHRoZSBmaXJzdCBsaW5lCisgICAg
ICAgIHdlIG1heSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IGEgc3RhcnQgY29sdW1uIG9mZnNl
dCBhcyB3ZWxsLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlYWxMZXgpOgorICAg
ICAgICBXaGVuIGJ1bXBpbmcgdGhlIGxpbmUgbnVtYmVyLCByZXNldCB0aGUgY29sdW1uIG9mZnNl
dCBmb3IgdGhlIG5leHQKKyAgICAgICAgbGluZSB3aXRoIHRoZSBuZXh0IGNoYXJhY3Rlci4KKwor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzeW50YXhFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OmxvZ0Vycm9yKToKKyAgICAgICAgSW5jbHVkZSBjb2x1bW4gaW5mb3Jt
YXRpb24uCisKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VBdXRob3JTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZVN0cmluZ0F0TGluZUFuZENvbHVt
bik6CisgICAgICAgIEluY2x1ZGUgY29sdW1uIGluZm9ybWF0aW9uLgorCisgICAgICAgICogY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpJbmxpbmVT
dHlsZVNoZWV0T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVy
OjpjcmVhdGVTaGVldCk6CisgICAgICAgIFNhdmUgYW5kIHVzZSBjb2x1bW4gaW5mb3JtYXRpb24g
bGF0ZXIgb24uCisKKyAgICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgIFVwZGF0
ZWQgcGFyc2VyIHNpZ25hdHVyZSBuZWVkcyBzdGFydGluZyBjb2x1bW4gYW5kIG5vIGxvbmdlciBo
YXMgb3B0aW9uYWwgcGFyYW1ldGVycy4KKwogMjAxNS0wMy0wOSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBHaXZlIENvbnRlbnRG
aWx0ZXIgc3ViY2xhc3NlcyBwcml2YXRlIGNvbnN0cnVjdG9ycywgYW5kIG1ha2UgdGhlbSBmYXN0
LWFsbG9jYXRlZCBhbmQgbm9uLWNvcHlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IGNiMDZkZDAuLjhmNjg1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0zMzEsNiAr
MzMxLDkgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKICAgICAsIG1fbGluZU51bWJlcigwKQogICAgICwgbV90b2tlblN0YXJ0TGluZU51bWJl
cigwKQogICAgICwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKDApCisgICAgLCBtX2NvbHVtbk9m
ZnNldEZvckxpbmUoMCkKKyAgICAsIG1fc2hlZXRTdGFydExpbmVOdW1iZXIoMCkKKyAgICAsIG1f
c2hlZXRTdGFydENvbHVtbk51bWJlcigwKQogICAgICwgbV9hbGxvd0ltcG9ydFJ1bGVzKHRydWUp
CiAgICAgLCBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zKHRydWUpCiAjaWYgRU5BQkxFKENT
U19ERVZJQ0VfQURBUFRBVElPTikKQEAgLTQyOSw3ICs0MzIsNyBAQCB2b2lkIENTU1BhcnNlcjo6
c2V0dXBQYXJzZXIoY29uc3QgY2hhciogcHJlZml4LCB1bnNpZ25lZCBwcmVmaXhMZW5ndGgsIFN0
cmluZ1ZpZQogICAgIG1fbGV4RnVuYyA9ICZDU1NQYXJzZXI6OnJlYWxMZXg8VUNoYXI+OwogfQog
Ci12b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBj
b25zdCBTdHJpbmcmIHN0cmluZywgaW50IHN0YXJ0TGluZU51bWJlciwgUnVsZVNvdXJjZURhdGFM
aXN0KiBydWxlU291cmNlRGF0YVJlc3VsdCwgYm9vbCBsb2dFcnJvcnMpCit2b2lkIENTU1BhcnNl
cjo6cGFyc2VTaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBTdHJpbmcmIHN0
cmluZywgaW50IHN0YXJ0TGluZU51bWJlciwgaW50IHN0YXJ0Q29sdW1uTnVtYmVyLCBSdWxlU291
cmNlRGF0YUxpc3QqIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LCBib29sIGxvZ0Vycm9ycykKIHsKICAg
ICBzZXRTdHlsZVNoZWV0KHNoZWV0KTsKICAgICBtX2RlZmF1bHROYW1lc3BhY2UgPSBzdGFyQXRv
bTsgLy8gUmVzZXQgdGhlIGRlZmF1bHQgbmFtZXNwYWNlLgpAQCAtNDQwLDYgKzQ0Myw5IEBAIHZv
aWQgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBpbnQKICAgICBtX2xvZ0Vycm9ycyA9IGxvZ0Vycm9ycyAmJiBzaGVl
dC0+c2luZ2xlT3duZXJEb2N1bWVudCgpICYmICFzaGVldC0+YmFzZVVSTCgpLmlzRW1wdHkoKSAm
JiBzaGVldC0+c2luZ2xlT3duZXJEb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgbV9pZ25vcmVFcnJv
cnNJbkRlY2xhcmF0aW9uID0gZmFsc2U7CiAgICAgbV9saW5lTnVtYmVyID0gc3RhcnRMaW5lTnVt
YmVyOworICAgIG1fY29sdW1uT2Zmc2V0Rm9yTGluZSA9IDA7CisgICAgbV9zaGVldFN0YXJ0TGlu
ZU51bWJlciA9IHN0YXJ0TGluZU51bWJlcjsKKyAgICBtX3NoZWV0U3RhcnRDb2x1bW5OdW1iZXIg
PSBzdGFydENvbHVtbk51bWJlcjsKICAgICBzZXR1cFBhcnNlcigiIiwgc3RyaW5nLCAiIik7CiAg
ICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBzaGVldC0+c2hyaW5rVG9GaXQoKTsKQEAgLTEwNDcy
LDEwICsxMDQ3OCwxOSBAQCBDU1NQYXJzZXI6OkxvY2F0aW9uIENTU1BhcnNlcjo6Y3VycmVudExv
Y2F0aW9uKCkKIHsKICAgICBMb2NhdGlvbiBsb2NhdGlvbjsKICAgICBsb2NhdGlvbi5saW5lTnVt
YmVyID0gbV90b2tlblN0YXJ0TGluZU51bWJlcjsKKyAgICBsb2NhdGlvbi5jb2x1bW5OdW1iZXIg
PSB0b2tlblN0YXJ0T2Zmc2V0KCkgLSBtX2NvbHVtbk9mZnNldEZvckxpbmU7CisKKyAgICBBU1NF
UlQobG9jYXRpb24ubGluZU51bWJlciA+PSAwKTsKKyAgICBBU1NFUlQobG9jYXRpb24uY29sdW1u
TnVtYmVyID49IDApOworCisgICAgaWYgKG1fdG9rZW5TdGFydExpbmVOdW1iZXIgPT0gbV9zaGVl
dFN0YXJ0TGluZU51bWJlcikKKyAgICAgICAgbG9jYXRpb24uY29sdW1uTnVtYmVyICs9IG1fc2hl
ZXRTdGFydENvbHVtbk51bWJlcjsKKwogICAgIGlmIChpczhCaXRTb3VyY2UoKSkKICAgICAgICAg
bG9jYXRpb24udG9rZW4uaW5pdCh0b2tlblN0YXJ0PExDaGFyPigpLCBjdXJyZW50Q2hhcmFjdGVy
PExDaGFyPigpIC0gdG9rZW5TdGFydDxMQ2hhcj4oKSk7CiAgICAgZWxzZQogICAgICAgICBsb2Nh
dGlvbi50b2tlbi5pbml0KHRva2VuU3RhcnQ8VUNoYXI+KCksIGN1cnJlbnRDaGFyYWN0ZXI8VUNo
YXI+KCkgLSB0b2tlblN0YXJ0PFVDaGFyPigpKTsKKwogICAgIHJldHVybiBsb2NhdGlvbjsKIH0K
IApAQCAtMTE1NjksOSArMTE1ODQsMTIgQEAgcmVzdGFydEFmdGVyQ29tbWVudDoKICAgICAgICAg
Ly8gTWlnaHQgc3RhcnQgd2l0aCBhICdcbicuCiAgICAgICAgIC0tY3VycmVudENoYXJhY3RlcjxT
cmNDaGFyYWN0ZXJUeXBlPigpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoKmN1cnJl
bnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSA9PSAnXG4nKQorICAgICAgICAgICAgaWYg
KCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgPT0gJ1xuJykgewogICAgICAg
ICAgICAgICAgICsrbV9saW5lTnVtYmVyOwotICAgICAgICAgICAgKytjdXJyZW50Q2hhcmFjdGVy
PFNyY0NoYXJhY3RlclR5cGU+KCk7CisgICAgICAgICAgICAgICAgKytjdXJyZW50Q2hhcmFjdGVy
PFNyY0NoYXJhY3RlclR5cGU+KCk7CisgICAgICAgICAgICAgICAgbV9jb2x1bW5PZmZzZXRGb3JM
aW5lID0gY3VycmVudENoYXJhY3Rlck9mZnNldCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgKytjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCk7CiAgICAg
ICAgIH0gd2hpbGUgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgPD0gJyAn
ICYmICh0eXBlc09mQVNDSUlDaGFyYWN0ZXJzWypjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3Rl
clR5cGU+KCldID09IENoYXJhY3RlcldoaXRlU3BhY2UpKTsKICAgICAgICAgYnJlYWs7CiAKQEAg
LTExNjM5LDggKzExNjU3LDEyIEBAIHJlc3RhcnRBZnRlckNvbW1lbnQ6CiAgICAgICAgIGlmICgq
Y3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpID09ICcqJykgewogICAgICAgICAg
ICAgKytjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCk7CiAgICAgICAgICAgICB3
aGlsZSAoY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpWzBdICE9ICcqJyB8fCBj
dXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMV0gIT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgPT0gJ1xu
JykKKyAgICAgICAgICAgICAgICBpZiAoKmN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlw
ZT4oKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICsrbV9saW5lTnVtYmVyOworICAg
ICAgICAgICAgICAgICAgICArK2N1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jb2x1bW5PZmZzZXRGb3JMaW5lID0gY3VycmVudENoYXJh
Y3Rlck9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3Rl
clR5cGU+KCkgPT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgICAvLyBVbnRlcm1pbmF0ZWQg
Y29tbWVudHMgYXJlIHNpbXBseSBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAgICBjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgLT0gMjsKQEAgLTExODU4LDE0ICsxMTg4MCwx
NSBAQCB2b2lkIENTU1BhcnNlcjo6c3ludGF4RXJyb3IoY29uc3QgTG9jYXRpb24mIGxvY2F0aW9u
LCBTeW50YXhFcnJvclR5cGUgZXJyb3IpCiB7CiAgICAgaWYgKCFpc0xvZ2dpbmdFcnJvcnMoKSkK
ICAgICAgICAgcmV0dXJuOworCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIHN3aXRj
aCAoZXJyb3IpIHsKICAgICBjYXNlIFByb3BlcnR5RGVjbGFyYXRpb25FcnJvcjoKICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJJbnZhbGlkIENTUyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBh
dDogIik7CiAgICAgICAgIGJyZWFrOwotCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJVbmV4cGVjdGVkIENTUyB0b2tlbjogIik7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi50b2tlbi5pczhCaXQoKSkKQEAgLTExODczLDcgKzEx
ODk2LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExvY2F0aW9uJiBsb2Nh
dGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQogICAgIGVsc2UKICAgICAgICAgYnVpbGRlci5h
cHBlbmQobG9jYXRpb24udG9rZW4uY2hhcmFjdGVyczE2KCksIGxvY2F0aW9uLnRva2VuLmxlbmd0
aCgpKTsKIAotICAgIGxvZ0Vycm9yKGJ1aWxkZXIudG9TdHJpbmcoKSwgbG9jYXRpb24ubGluZU51
bWJlcik7CisgICAgbG9nRXJyb3IoYnVpbGRlci50b1N0cmluZygpLCBsb2NhdGlvbi5saW5lTnVt
YmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogCiAgICAgbV9pZ25vcmVFcnJvcnNJbkRlY2xh
cmF0aW9uID0gdHJ1ZTsKIH0KQEAgLTExODgzLDExICsxMTkwNiwxMCBAQCBib29sIENTU1BhcnNl
cjo6aXNMb2dnaW5nRXJyb3JzKCkKICAgICByZXR1cm4gbV9sb2dFcnJvcnMgJiYgIW1faWdub3Jl
RXJyb3JzSW5EZWNsYXJhdGlvbjsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmxvZ0Vycm9yKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIpCit2b2lkIENTU1BhcnNlcjo6bG9nRXJy
b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKIHsKLSAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE0MzEzPiBDU1MgcGFy
c2VyIGNvbnNvbGUgbWVzc2FnZSBlcnJvcnMgc2hvdWxkIGluY2x1ZGUgY29sdW1uIG51bWJlcnMu
CiAgICAgUGFnZUNvbnNvbGVDbGllbnQmIGNvbnNvbGUgPSBtX3N0eWxlU2hlZXQtPnNpbmdsZU93
bmVyRG9jdW1lbnQoKS0+cGFnZSgpLT5jb25zb2xlKCk7Ci0gICAgY29uc29sZS5hZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkNTUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlLCBtX3N0
eWxlU2hlZXQtPmJhc2VVUkwoKS5zdHJpbmcoKSwgbGluZU51bWJlciArIDEsIDApOworICAgIGNv
bnNvbGUuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpDU1MsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWVzc2FnZSwgbV9zdHlsZVNoZWV0LT5iYXNlVVJMKCkuc3RyaW5nKCksIGxpbmVOdW1iZXIg
KyAxLCBjb2x1bW5OdW1iZXIgKyAxKTsKIH0KIAogUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFt
ZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmIG5hbWUsIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4gcG9wS2V5ZnJhbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDgzNmZkZTkuLjUzZmJmNTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgfkNTU1BhcnNlcigpOwogCi0gICAgdm9pZCBwYXJzZVNoZWV0KFN0eWxlU2hlZXRDb250
ZW50cyosIGNvbnN0IFN0cmluZyYsIGludCBzdGFydExpbmVOdW1iZXIgPSAwLCBSdWxlU291cmNl
RGF0YUxpc3QqID0gbnVsbHB0ciwgYm9vbCA9IGZhbHNlKTsKKyAgICB2b2lkIHBhcnNlU2hlZXQo
U3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciwg
aW50IHN0YXJ0Q29sdW1uTnVtYmVyLCBSdWxlU291cmNlRGF0YUxpc3QqLCBib29sIGxvZ0Vycm9y
cyk7CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBwYXJzZVJ1bGUoU3R5bGVTaGVldENv
bnRlbnRzKiwgY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBw
YXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcmKTsKICAg
ICBib29sIHBhcnNlU3VwcG9ydHNDb25kaXRpb24oY29uc3QgU3RyaW5nJik7CkBAIC00NjQsNiAr
NDY0LDggQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdW5zaWduZWQgdG9rZW5TdGFydE9mZnNldCgp
OwogICAgIGlubGluZSBVQ2hhciB0b2tlblN0YXJ0Q2hhcigpOwogCisgICAgaW5saW5lIHVuc2ln
bmVkIGN1cnJlbnRDaGFyYWN0ZXJPZmZzZXQoKTsKKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgogICAgIGlubGluZSBib29sIGlzSWRlbnRpZmllclN0YXJ0KCk7CiAKQEAg
LTU5Miw2ICs1OTQsMTAgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9saW5lTnVtYmVyOwogICAgIGlu
dCBtX3Rva2VuU3RhcnRMaW5lTnVtYmVyOwogICAgIGludCBtX2xhc3RTZWxlY3RvckxpbmVOdW1i
ZXI7CisgICAgaW50IG1fY29sdW1uT2Zmc2V0Rm9yTGluZTsKKworICAgIGludCBtX3NoZWV0U3Rh
cnRMaW5lTnVtYmVyOworICAgIGludCBtX3NoZWV0U3RhcnRDb2x1bW5OdW1iZXI7CiAKICAgICBi
b29sIG1fYWxsb3dJbXBvcnRSdWxlczsKICAgICBib29sIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJh
dGlvbnM7CkBAIC02NDEsNyArNjQ3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgYm9vbCBp
c0xvZ2dpbmdFcnJvcnMoKTsKLSAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIpOworICAgIHZvaWQgbG9nRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAKICAgICBib29sIHZhbGlk
YXRlQ2FsY3VsYXRpb25Vbml0KFZhbHVlV2l0aENhbGN1bGF0aW9uJiwgVW5pdHMpOwogCkBAIC02
ODUsNiArNjkxLDcgQEAgcHJpdmF0ZToKIAogc3RydWN0IENTU1BhcnNlcjo6TG9jYXRpb24gewog
ICAgIGludCBsaW5lTnVtYmVyOworICAgIGludCBjb2x1bW5OdW1iZXI7CiAgICAgQ1NTUGFyc2Vy
U3RyaW5nIHRva2VuOwogfTsKIApAQCAtNzEzLDYgKzcyMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQg
Q1NTUGFyc2VyOjp0b2tlblN0YXJ0T2Zmc2V0KCkKICAgICByZXR1cm4gbV90b2tlblN0YXJ0LnB0
cjE2IC0gbV9kYXRhU3RhcnQxNi5nZXQoKTsKIH0KIAoraW5saW5lIHVuc2lnbmVkIENTU1BhcnNl
cjo6Y3VycmVudENoYXJhY3Rlck9mZnNldCgpCit7CisgICAgaWYgKGlzOEJpdFNvdXJjZSgpKQor
ICAgICAgICByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVyOCAtIG1fZGF0YVN0YXJ0OC5nZXQoKTsK
KyAgICByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVyMTYgLSBtX2RhdGFTdGFydDE2LmdldCgpOwor
fQorCiBpbmxpbmUgVUNoYXIgQ1NTUGFyc2VyOjp0b2tlblN0YXJ0Q2hhcigpCiB7CiAgICAgaWYg
KGlzOEJpdFNvdXJjZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNw
cAppbmRleCA3NDFjYjY0Li41YjdlNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRz
OjpwYXJzZUF1dGhvclN0eWxlU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVk
CiAgICAgU3RyaW5nIHNoZWV0VGV4dCA9IGNhY2hlZFN0eWxlU2hlZXQtPnNoZWV0VGV4dCgmaGFz
VmFsaWRNSU1FVHlwZSk7CiAKICAgICBDU1NQYXJzZXIgcChwYXJzZXJDb250ZXh0KCkpOwotICAg
IHAucGFyc2VTaGVldCh0aGlzLCBzaGVldFRleHQsIDAsIDAsIHRydWUpOworICAgIHAucGFyc2VT
aGVldCh0aGlzLCBzaGVldFRleHQsIDAsIDAsIG51bGxwdHIsIHRydWUpOwogCiAgICAgLy8gSWYg
d2UncmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgY3Jvc3Mtb3JpZ2luLCBhbmQgdGhlIE1JTUUgdHlw
ZSBpcyBub3Qgc3RhbmRhcmQsIHJlcXVpcmUgdGhlIENTUwogICAgIC8vIHRvIGF0IGxlYXN0IHN0
YXJ0IHdpdGggYSBzeW50YWN0aWNhbGx5IHZhbGlkIENTUyBydWxlLgpAQCAtMzE2LDEzICszMTYs
MTMgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldChjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWQKIAogYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6
OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0KQogewotICAgIHJldHVybiBwYXJz
ZVN0cmluZ0F0TGluZShzaGVldFRleHQsIDAsIGZhbHNlKTsKKyAgICByZXR1cm4gcGFyc2VTdHJp
bmdBdExpbmVBbmRDb2x1bW4oc2hlZXRUZXh0LCAwLCAwLCBmYWxzZSk7CiB9CiAKLWJvb2wgU3R5
bGVTaGVldENvbnRlbnRzOjpwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmIHNoZWV0VGV4
dCwgaW50IHN0YXJ0TGluZU51bWJlciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitib29sIFN0eWxl
U2hlZXRDb250ZW50czo6cGFyc2VTdHJpbmdBdExpbmVBbmRDb2x1bW4oY29uc3QgU3RyaW5nJiBz
aGVldFRleHQsIGludCBzdGFydExpbmVOdW1iZXIsIGludCBzdGFydENvbHVtbk51bWJlciwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgQ1NTUGFyc2VyIHAocGFyc2VyQ29udGV4dCgpKTsK
LSAgICBwLnBhcnNlU2hlZXQodGhpcywgc2hlZXRUZXh0LCBzdGFydExpbmVOdW1iZXIsIDAsIGNy
ZWF0ZWRCeVBhcnNlcik7CisgICAgcC5wYXJzZVNoZWV0KHRoaXMsIHNoZWV0VGV4dCwgc3RhcnRM
aW5lTnVtYmVyLCBzdGFydENvbHVtbk51bWJlciwgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oCmluZGV4IGUxNGIwN2EuLjZjYTAzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0Q29udGVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYXJzZUF1
dGhvclN0eWxlU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCosIGNvbnN0IFNlY3VyaXR5
T3JpZ2luKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZVN0cmluZyhjb25zdCBTdHJp
bmcmKTsKLSAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYsIGludCBzdGFy
dExpbmVOdW1iZXIsIGJvb2wpOworICAgIGJvb2wgcGFyc2VTdHJpbmdBdExpbmVBbmRDb2x1bW4o
Y29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciwgaW50IHN0YXJ0Q29sdW1uTnVtYmVy
LCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXgg
ZWM3NzY4Yi4uY2RmYjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0
eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OklubGluZVN0eWxlU2hlZXRPd25lcihEb2N1bWVudCYgZG9jdW1l
bnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogbV9pc1BhcnNpbmdDaGlsZHJlbihjcmVh
dGVkQnlQYXJzZXIpCiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCi0gICAgLCBtX3N0YXJ0TGluZU51
bWJlcihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpCisgICAgLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKQogewogICAgIGlmIChjcmVhdGVkQnlQYXJzZXIgJiYgZG9j
dW1lbnQuc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgJiYgIWRvY3VtZW50LmlzSW5Eb2N1bWVu
dFdyaXRlKCkpCi0gICAgICAgIG1fc3RhcnRMaW5lTnVtYmVyID0gZG9jdW1lbnQuc2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZTsKKyAgICAgICAgbV9zdGFy
dFRleHRQb3NpdGlvbiA9IGRvY3VtZW50LnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT50ZXh0
UG9zaXRpb24oKTsKIH0KIAogSW5saW5lU3R5bGVTaGVldE93bmVyOjp+SW5saW5lU3R5bGVTaGVl
dE93bmVyKCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6
Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogCiAgICAg
aWYgKCFpc1ZhbGlkQ1NTQ29udGVudFR5cGUoZWxlbWVudCwgbV9jb250ZW50VHlwZSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpZiAoIWRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5h
bGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0TGluZU51bWJlcikpCisgICAg
aWYgKCFkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVTdHlsZShk
b2N1bWVudC51cmwoKSwgbV9zdGFydFRleHRQb3NpdGlvbi5tX2xpbmUpKQogICAgICAgICByZXR1
cm47CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWFRdWVyaWVzOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBVUkwoKSwgZG9jdW1lbnQuaW5wdXRFbmNvZGluZygp
KTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7
CiAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKLSAgICBtX3NoZWV0LT5j
b250ZW50cygpLnBhcnNlU3RyaW5nQXRMaW5lKHRleHQsIG1fc3RhcnRMaW5lTnVtYmVyLnplcm9C
YXNlZEludCgpLCBtX2lzUGFyc2luZ0NoaWxkcmVuKTsKKyAgICBtX3NoZWV0LT5jb250ZW50cygp
LnBhcnNlU3RyaW5nQXRMaW5lQW5kQ29sdW1uKHRleHQsIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9s
aW5lLnplcm9CYXNlZEludCgpLCBtX3N0YXJ0VGV4dFBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNl
ZEludCgpLCBtX2lzUGFyc2luZ0NoaWxkcmVuKTsKIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmgKaW5kZXggNmY0MjJj
OS4uMWVmM2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
aApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzUGFyc2luZ0NoaWxk
cmVuOwogICAgIGJvb2wgbV9sb2FkaW5nOwotICAgIFdURjo6T3JkaW5hbE51bWJlciBtX3N0YXJ0
TGluZU51bWJlcjsKKyAgICBXVEY6OlRleHRQb3NpdGlvbiBtX3N0YXJ0VGV4dFBvc2l0aW9uOwog
ICAgIEF0b21pY1N0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIEF0b21pY1N0cmluZyBtX21lZGlh
OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDA4YmRiZWUuLjY5ZmUz
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTExMDYsNyArMTEwNiw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5z
dXJlU291cmNlRGF0YSgpCiAKICAgICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBuZXdTdHls
ZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRvIHJ1bGVTb3Vy
Y2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7Ci0g
ICAgY3JlYXRlQ1NTUGFyc2VyKG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSktPnBh
cnNlU2hlZXQobmV3U3R5bGVTaGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCks
IDAsIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKKyAgICBjcmVhdGVDU1NQYXJzZXIobV9w
YWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKS0+cGFyc2VTaGVldChuZXdTdHlsZVNoZWV0
LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgMCwgMCwgcnVsZVNvdXJjZURhdGFS
ZXN1bHQuZ2V0KCksIGZhbHNlKTsKICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURh
dGEoV1RGOjptb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2Vk
U3R5bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5k
ZXggZGVlNDdhZS4uOWE4MzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTYgQEAKIDIwMTUtMDMtMTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1MgcGFyc2VyIGVycm9ycyBpbiB0aGUgY29uc29s
ZSBzaG91bGQgaW5jbHVkZSBjb2x1bW4gbnVtYmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNz
YWdlSW1wbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJv
dG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAgICAgICBDb2x1bW4gbnVtYmVycyBpbiBjb25z
b2xlIG1lc3NhZ2VzIGFyZSBhbHNvIDEgYmFzZWQgYW5kIHNob3VsZCBiZSBhZGp1c3RlZC4KKwor
MjAxNS0wMy0xMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUuZXJyb3Igb3V0cHV0IGJyb2tlbiwgZG9lcyBub3Qg
cHJvZHVjZSBPYmplY3RUcmVlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDI1NTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VJbXBsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VJbXBsLmpzCmluZGV4IDUz
NWRiY2MuLjNmNDY5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlSW1wbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZUltcGwuanMKQEAgLTE5OSw2
ICsxOTksNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIHN0YWNrIHRyYWNlIGxpbmUgbnVtYmVy
cyBhcmUgb25lLWJhc2VkLgogICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVO
dW1iZXIgLSAxIDogMDsKKyAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29s
dW1uTnVtYmVyIC0gMSA6IDA7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5
TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2Ut
dXJsIik7CiAgICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248441</attachid>
            <date>2015-03-11 12:41:06 -0700</date>
            <delta_ts>2015-03-11 16:04:28 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>better.patch</filename>
            <type>text/plain</type>
            <size>23351</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MjA2YTM1Li5kMGY0ZTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDMt
MTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBDU1MgcGFyc2VyIGVycm9ycyBpbiB0aGUgY29uc29sZSBzaG91bGQgaW5jbHVk
ZSBjb2x1bW4gbnVtYmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE0MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCBlcnJvcnMgaW4gYm90aCBleHRlcm5hbCBhbmQgaW5saW5lIENTUyBhbmQg
U2NyaXB0cyB0byBlbnN1cmUgdGhleSBoYXZlCisgICAgICAgIGV4cGVjdGVkIGxpbmU6Y29sdW1u
IGluZm9ybWF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2Fy
bmluZ3MtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXBy
b3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvZXJyb3JzLmNzczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9lcnJvcnMuanM6IEFkZGVkLgorCiAyMDE1LTAz
LTExICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIDxh
dHRhY2htZW50PnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2hlbiBkcm9wcGluZyBmaWxlcyBvbnRvIGNv
bnRlbnRFZGl0YWJsZSBhcmVhcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9jb25zb2xlL3dhcm5pbmdzLWVycm9ycy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc0M2JmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9jb25zb2xlL3dhcm5pbmdzLWVy
cm9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE6IGVycm9yIHNjcmlwdAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IHdhcm4gc2NyaXB0CitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNTogZXJyb3Igc2NyaXB0CitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNjogd2FybiBzY3JpcHQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnW10ueC54JykKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxNzogd2FybiAxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6IGVycm9y
IDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxODogZXJyb3IgMgorVGVzdHMgdGhhdCBDU1MvSmF2
YVNjcmlwdCBlcnJvcnMgYW5kIHdhcm5pbmdzIGFyZSBzZW50IHRvIHRoZSBjb25zb2xlIHdpdGgg
bGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uLgoreyJzb3VyY2UiOiJjc3MiLCJsZXZlbCI6Indh
cm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkgZGVjbGFyYXRpb24gYXQ6ICoiLCJs
b2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjU6MjAifQoreyJzb3VyY2UiOiJjc3MiLCJs
ZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkgZGVjbGFyYXRpb24g
YXQ6ICoiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjY6MTQifQoreyJzb3VyY2Ui
OiJjc3MiLCJsZXZlbCI6Indhcm5pbmciLCJ0ZXh0IjoiSW52YWxpZCBDU1MgcHJvcGVydHkgZGVj
bGFyYXRpb24gYXQ6ICoiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjc6NyJ9Cit7
InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlkIENTUyBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoid2FybmluZ3MtZXJyb3JzLmh0bWw6
OTo4In0KK3sic291cmNlIjoiY3NzIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6IkludmFsaWQg
Q1NTIHByb3BlcnR5IGRlY2xhcmF0aW9uIGF0OiAqIiwibG9jYXRpb24iOiJlcnJvcnMuY3NzOjE6
NyJ9Cit7InNvdXJjZSI6ImNzcyIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJJbnZhbGlkIENT
UyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBhdDogKiIsImxvY2F0aW9uIjoiZXJyb3JzLmNzczoxOjI5
In0KK3sic291cmNlIjoiY3NzIiwibGV2ZWwiOiJ3YXJuaW5nIiwidGV4dCI6IkludmFsaWQgQ1NT
IHByb3BlcnR5IGRlY2xhcmF0aW9uIGF0OiAqIiwibG9jYXRpb24iOiJlcnJvcnMuY3NzOjQ6NSJ9
Cit7InNvdXJjZSI6ImNvbnNvbGUtYXBpIiwibGV2ZWwiOiJlcnJvciIsInRleHQiOiJlcnJvciBz
Y3JpcHQiLCJsb2NhdGlvbiI6ImVycm9ycy5qczoxOjE0IiwicGFyYW1ldGVycyI6W3sidHlwZSI6
InN0cmluZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6Indhcm5pbmciLCJ0
ZXh0Ijoid2FybiBzY3JpcHQiLCJsb2NhdGlvbiI6ImVycm9ycy5qczoxOjQ0IiwicGFyYW1ldGVy
cyI6W3sidHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6
ImVycm9yIiwidGV4dCI6ImVycm9yIHNjcmlwdCIsImxvY2F0aW9uIjoiZXJyb3JzLmpzOjU6MTgi
LCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1dfQoreyJzb3VyY2UiOiJjb25zb2xlLWFw
aSIsImxldmVsIjoid2FybmluZyIsInRleHQiOiJ3YXJuIHNjcmlwdCIsImxvY2F0aW9uIjoiZXJy
b3JzLmpzOjY6MTciLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn1dfQoreyJzb3VyY2Ui
OiJqYXZhc2NyaXB0IiwibGV2ZWwiOiJlcnJvciIsInRleHQiOiJUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdbXS54LngnKSIsImxvY2F0aW9uIjoid2Fy
bmluZ3MtZXJyb3JzLmh0bWw6MTU6MTgifQoreyJzb3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVs
Ijoid2FybmluZyIsInRleHQiOiJ3YXJuIDEiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5o
dG1sOjE3OjEzIiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9XX0KK3sic291cmNlIjoi
Y29uc29sZS1hcGkiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6ImVycm9yIDEiLCJsb2NhdGlvbiI6
Indhcm5pbmdzLWVycm9ycy5odG1sOjE3OjM4IiwicGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmlu
ZyJ9XX0KK3sic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6ImVycm9yIiwidGV4dCI6ImVy
cm9yIDIiLCJsb2NhdGlvbiI6Indhcm5pbmdzLWVycm9ycy5odG1sOjE4OjE3IiwicGFyYW1ldGVy
cyI6W3sidHlwZSI6InN0cmluZyJ9XX0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvY29uc29sZS93YXJuaW5ncy1lcnJvcnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWFiZmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2NvbnNvbGUvd2FybmluZ3MtZXJyb3JzLmh0bWwK
QEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNl
cy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vcmVzb3VyY2VzL2Vycm9ycy5jc3MiPgorICA8c3R5bGU+ICAgIGRpdiB7ICogY29sb3I6
IHJlZDsgfTwvc3R5bGU+Cis8c3R5bGU+ZGl2IHsgKiBjb2xvcjogcmVkOyB9CitkaXYgeyAqIGNv
bG9yOiByZWQ7IH0KKyAgIGRpdiB7CisgICAgICAgKgorICAgICAgIGNvbG9yOgorICAgICAgIHJl
ZDsKKyAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Vycm9ycy5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQ+ICAgW10ueC54ICAgPC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc29sZS53YXJuKCJ3YXJuIDEi
KTsgY29uc29sZS5lcnJvcigiZXJyb3IgMSIpOworICAgY29uc29sZS5lcnJvcigiZXJyb3IgMiIp
OworPC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9y
VGVzdC5pbXBvcnRTY3JpcHQoIi4uLy4uLy4uLy4uL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJj
ZXMvY29uc29sZS1oZWxwZXIuanMiKTsKKworICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQo
IkNvbnNvbGUuZW5hYmxlIiwge30pOworCisgICAgdmFyIGNvbnNvbGVNZXNzYWdlQ291bnQgPSAw
OworICAgIGNvbnN0IGV4cGVjdGVkQ29uc29sZU1lc3NhZ2VzID0gMTU7CisKKyAgICBJbnNwZWN0
b3JUZXN0LmV2ZW50SGFuZGxlclsiQ29uc29sZS5tZXNzYWdlQWRkZWQiXSA9IGZ1bmN0aW9uKG1l
c3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgc2ltcGxpZmllZE1lc3NhZ2UgPSBDb25z
b2xlSGVscGVyLnNpbXBsaWZpZWRDb25zb2xlTWVzc2FnZShtZXNzYWdlT2JqZWN0KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coSlNPTi5zdHJpbmdpZnkoc2ltcGxpZmllZE1lc3NhZ2UpKTsK
KworICAgICAgICBpZiAoKytjb25zb2xlTWVzc2FnZUNvdW50ID09PSBleHBlY3RlZENvbnNvbGVN
ZXNzYWdlcykKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4K
K1Rlc3RzIHRoYXQgQ1NTL0phdmFTY3JpcHQgZXJyb3JzIGFuZCB3YXJuaW5ncyBhcmUgc2VudCB0
byB0aGUgY29uc29sZSB3aXRoIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi48YnI+Cis8L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvcmVzb3VyY2VzL2Vycm9ycy5jc3MgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9j
b2wvcmVzb3VyY2VzL2Vycm9ycy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjg1YjQyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9yZXNvdXJjZXMvZXJyb3JzLmNzcwpAQCAtMCwwICsxLDcgQEAKK2RpdiB7ICogY29sb3I6
IHJlZDsgfSBkaXYgeyAqIGNvbG9yOiByZWQ7IH0KKworZGl2IHsKKyAgICAqCisgICAgY29sb3I6
CisgICAgcmVkOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L3Jlc291cmNlcy9lcnJvcnMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVz
b3VyY2VzL2Vycm9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDM3
ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jl
c291cmNlcy9lcnJvcnMuanMKQEAgLTAsMCArMSw5IEBACitjb25zb2xlLmVycm9yKCJlcnJvciBz
Y3JpcHQiKTsgY29uc29sZS53YXJuKCJ3YXJuIHNjcmlwdCIpOworCisKK2Z1bmN0aW9uIGZvbygp
IHsKKyAgICBjb25zb2xlLmVycm9yKCJlcnJvciBzY3JpcHQiKTsKKyAgICBjb25zb2xlLndhcm4o
Indhcm4gc2NyaXB0Iik7Cit9CisKK2ZvbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxNDQ4ZmUuLmNmZmQ1
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxNS0wMy0xMSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBw
YXJzZXIgZXJyb3JzIGluIHRoZSBjb25zb2xlIHNob3VsZCBpbmNsdWRlIGNvbHVtbiBudW1iZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQzMTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBp
bnNwZWN0b3ItcHJvdG9jb2wvY29uc29sZS93YXJuaW5ncy1lcnJvcnMuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjdXJyZW50
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgR2V0IHRoZSBjdXJyZW50IGNoYXJhY3RlciBvZmZz
ZXQgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgdHlwZS4KKyAgICAgICAgQWRkIGluc3RhbmNlIHZh
cmlhYmxlcyB0byB0cmFjayBjb2x1bW4gcG9zaXRpb24gYW5kIHN0YXJ0CisgICAgICAgIGxpbmUg
LyBjb2x1bW4gZm9yIGlubGluZSBzdHlsZXNoZWV0cy4KKworICAgICAgICAqIGNzcy9DU1NQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoZWV0KToKKyAgICAgICAgSW5pdGlhbGl6ZSBu
ZXcgaW5zdGFuY2UgdmFyaWFibGVzLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmN1
cnJlbnRMb2NhdGlvbik6CisgICAgICAgIFVwZGF0ZSB0byBpbmNsdWRlIGNvbHVtbiBpbmZvcm1h
dGlvbiBmb3IgdGhlIHRva2VuLiBBbHNvLCBpZiB3ZSBhcmUgb24gdGhlCisgICAgICAgIGZpcnN0
IGxpbmUgd2UgbWF5IG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgYSBzdGFydCBjb2x1bW4gb2Zm
c2V0IGFzIHdlbGwuCisKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmVhbExleCk6Cisg
ICAgICAgIFNldCB0aGUgdG9rZW4ncyBzdGFydCBjb2x1bW4uCisgICAgICAgIFdoZW4gYnVtcGlu
ZyB0aGUgbGluZSBudW1iZXIsIHJlc2V0IHRoZSBjb2x1bW4gb2Zmc2V0IGZvciB0aGUgbmV4dAor
ICAgICAgICBsaW5lIHdpdGggdGhlIG5leHQgY2hhcmFjdGVyLgorCisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnN5bnRheEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
bG9nRXJyb3IpOgorICAgICAgICBJbmNsdWRlIGNvbHVtbiBpbmZvcm1hdGlvbi4KKworICAgICAg
ICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVT
aGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVNoZWV0Q29udGVudHM6OnBhcnNlU3RyaW5nQXRMaW5lQW5kQ29sdW1uKToKKyAgICAgICAgSW5j
bHVkZSBjb2x1bW4gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRl
bnRzLmg6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OklubGluZVN0eWxlU2hlZXRPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToK
KyAgICAgICAgU2F2ZSBhbmQgdXNlIGNvbHVtbiBpbmZvcm1hdGlvbiBsYXRlciBvbi4KKworICAg
ICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgVXBkYXRlZCBwYXJzZXIgc2lnbmF0
dXJlIG5lZWRzIHN0YXJ0aW5nIGNvbHVtbiBhbmQgbm8gbG9uZ2VyIGhhcyBvcHRpb25hbCBwYXJh
bWV0ZXJzLgorCiAyMDE1LTAzLTExICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHpvb20gb24gcGFnZXMgdGhh
dCBjbGFpbSB0byBsYXkgb3V0IHRvIGRldmljZSBzaXplIGFuZCB0aGVuIGZhaWwgdG8gZG8gc28K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNmZiMDI4NS4uMzBmYTJjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKQEAgLTMzMCw3ICszMzAsMTEgQEAgQ1NTUGFyc2VyOjpDU1NQYXJz
ZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fdG9rZW4oMCkKICAg
ICAsIG1fbGluZU51bWJlcigwKQogICAgICwgbV90b2tlblN0YXJ0TGluZU51bWJlcigwKQorICAg
ICwgbV90b2tlblN0YXJ0Q29sdW1uTnVtYmVyKDApCiAgICAgLCBtX2xhc3RTZWxlY3RvckxpbmVO
dW1iZXIoMCkKKyAgICAsIG1fY29sdW1uT2Zmc2V0Rm9yTGluZSgwKQorICAgICwgbV9zaGVldFN0
YXJ0TGluZU51bWJlcigwKQorICAgICwgbV9zaGVldFN0YXJ0Q29sdW1uTnVtYmVyKDApCiAgICAg
LCBtX2FsbG93SW1wb3J0UnVsZXModHJ1ZSkKICAgICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJh
dGlvbnModHJ1ZSkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQpAQCAtNDI5LDcg
KzQzMyw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpzZXR1cFBhcnNlcihjb25zdCBjaGFyKiBwcmVmaXgs
IHVuc2lnbmVkIHByZWZpeExlbmd0aCwgU3RyaW5nVmllCiAgICAgbV9sZXhGdW5jID0gJkNTU1Bh
cnNlcjo6cmVhbExleDxVQ2hhcj47CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0KFN0
eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnRM
aW5lTnVtYmVyLCBSdWxlU291cmNlRGF0YUxpc3QqIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LCBib29s
IGxvZ0Vycm9ycykKK3ZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50
cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnRMaW5lTnVtYmVyLCBpbnQg
c3RhcnRDb2x1bW5OdW1iZXIsIFJ1bGVTb3VyY2VEYXRhTGlzdCogcnVsZVNvdXJjZURhdGFSZXN1
bHQsIGJvb2wgbG9nRXJyb3JzKQogewogICAgIHNldFN0eWxlU2hlZXQoc2hlZXQpOwogICAgIG1f
ZGVmYXVsdE5hbWVzcGFjZSA9IHN0YXJBdG9tOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBuYW1lc3Bh
Y2UuCkBAIC00NDAsNiArNDQ0LDkgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXQoU3R5bGVT
aGVldENvbnRlbnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludAogICAgIG1fbG9n
RXJyb3JzID0gbG9nRXJyb3JzICYmIHNoZWV0LT5zaW5nbGVPd25lckRvY3VtZW50KCkgJiYgIXNo
ZWV0LT5iYXNlVVJMKCkuaXNFbXB0eSgpICYmIHNoZWV0LT5zaW5nbGVPd25lckRvY3VtZW50KCkt
PnBhZ2UoKTsKICAgICBtX2lnbm9yZUVycm9yc0luRGVjbGFyYXRpb24gPSBmYWxzZTsKICAgICBt
X2xpbmVOdW1iZXIgPSBzdGFydExpbmVOdW1iZXI7CisgICAgbV9jb2x1bW5PZmZzZXRGb3JMaW5l
ID0gMDsKKyAgICBtX3NoZWV0U3RhcnRMaW5lTnVtYmVyID0gc3RhcnRMaW5lTnVtYmVyOworICAg
IG1fc2hlZXRTdGFydENvbHVtbk51bWJlciA9IHN0YXJ0Q29sdW1uTnVtYmVyOwogICAgIHNldHVw
UGFyc2VyKCIiLCBzdHJpbmcsICIiKTsKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIHNoZWV0
LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMTA0ODMsMTAgKzEwNDkwLDE5IEBAIENTU1BhcnNlcjo6TG9j
YXRpb24gQ1NTUGFyc2VyOjpjdXJyZW50TG9jYXRpb24oKQogewogICAgIExvY2F0aW9uIGxvY2F0
aW9uOwogICAgIGxvY2F0aW9uLmxpbmVOdW1iZXIgPSBtX3Rva2VuU3RhcnRMaW5lTnVtYmVyOwor
ICAgIGxvY2F0aW9uLmNvbHVtbk51bWJlciA9IG1fdG9rZW5TdGFydENvbHVtbk51bWJlcjsKKwor
ICAgIEFTU0VSVChsb2NhdGlvbi5saW5lTnVtYmVyID49IDApOworICAgIEFTU0VSVChsb2NhdGlv
bi5jb2x1bW5OdW1iZXIgPj0gMCk7CisKKyAgICBpZiAobG9jYXRpb24ubGluZU51bWJlciA9PSBt
X3NoZWV0U3RhcnRMaW5lTnVtYmVyKQorICAgICAgICBsb2NhdGlvbi5jb2x1bW5OdW1iZXIgKz0g
bV9zaGVldFN0YXJ0Q29sdW1uTnVtYmVyOworCiAgICAgaWYgKGlzOEJpdFNvdXJjZSgpKQogICAg
ICAgICBsb2NhdGlvbi50b2tlbi5pbml0KHRva2VuU3RhcnQ8TENoYXI+KCksIGN1cnJlbnRDaGFy
YWN0ZXI8TENoYXI+KCkgLSB0b2tlblN0YXJ0PExDaGFyPigpKTsKICAgICBlbHNlCiAgICAgICAg
IGxvY2F0aW9uLnRva2VuLmluaXQodG9rZW5TdGFydDxVQ2hhcj4oKSwgY3VycmVudENoYXJhY3Rl
cjxVQ2hhcj4oKSAtIHRva2VuU3RhcnQ8VUNoYXI+KCkpOworCiAgICAgcmV0dXJuIGxvY2F0aW9u
OwogfQogCkBAIC0xMTM1OCw2ICsxMTM3NCw3IEBAIHJlc3RhcnRBZnRlckNvbW1lbnQ6CiAgICAg
cmVzdWx0ID0gY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpOwogICAgIHNldFRv
a2VuU3RhcnQocmVzdWx0KTsKICAgICBtX3Rva2VuU3RhcnRMaW5lTnVtYmVyID0gbV9saW5lTnVt
YmVyOworICAgIG1fdG9rZW5TdGFydENvbHVtbk51bWJlciA9IHRva2VuU3RhcnRPZmZzZXQoKSAt
IG1fY29sdW1uT2Zmc2V0Rm9yTGluZTsKICAgICBtX3Rva2VuID0gKmN1cnJlbnRDaGFyYWN0ZXI8
U3JjQ2hhcmFjdGVyVHlwZT4oKTsKICAgICArK2N1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVy
VHlwZT4oKTsKIApAQCAtMTE1ODAsOSArMTE1OTcsMTIgQEAgcmVzdGFydEFmdGVyQ29tbWVudDoK
ICAgICAgICAgLy8gTWlnaHQgc3RhcnQgd2l0aCBhICdcbicuCiAgICAgICAgIC0tY3VycmVudENo
YXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBp
ZiAoKmN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVyVHlwZT4oKSA9PSAnXG4nKQorICAgICAg
ICAgICAgaWYgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgPT0gJ1xuJykg
ewogICAgICAgICAgICAgICAgICsrbV9saW5lTnVtYmVyOwotICAgICAgICAgICAgKytjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCk7CisgICAgICAgICAgICAgICAgKytjdXJyZW50
Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCk7CisgICAgICAgICAgICAgICAgbV9jb2x1bW5P
ZmZzZXRGb3JMaW5lID0gY3VycmVudENoYXJhY3Rlck9mZnNldCgpOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgKytjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+
KCk7CiAgICAgICAgIH0gd2hpbGUgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+
KCkgPD0gJyAnICYmICh0eXBlc09mQVNDSUlDaGFyYWN0ZXJzWypjdXJyZW50Q2hhcmFjdGVyPFNy
Y0NoYXJhY3RlclR5cGU+KCldID09IENoYXJhY3RlcldoaXRlU3BhY2UpKTsKICAgICAgICAgYnJl
YWs7CiAKQEAgLTExNjUwLDggKzExNjcwLDEyIEBAIHJlc3RhcnRBZnRlckNvbW1lbnQ6CiAgICAg
ICAgIGlmICgqY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpID09ICcqJykgewog
ICAgICAgICAgICAgKytjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCk7CiAgICAg
ICAgICAgICB3aGlsZSAoY3VycmVudENoYXJhY3RlcjxTcmNDaGFyYWN0ZXJUeXBlPigpWzBdICE9
ICcqJyB8fCBjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KClbMV0gIT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCpjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+
KCkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBpZiAoKmN1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hh
cmFjdGVyVHlwZT4oKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICsrbV9saW5lTnVt
YmVyOworICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRDaGFyYWN0ZXI8U3JjQ2hhcmFjdGVy
VHlwZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb2x1bW5PZmZzZXRGb3JMaW5lID0gY3Vy
cmVudENoYXJhY3Rlck9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCpjdXJyZW50Q2hhcmFjdGVyPFNy
Y0NoYXJhY3RlclR5cGU+KCkgPT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgICAvLyBVbnRl
cm1pbmF0ZWQgY29tbWVudHMgYXJlIHNpbXBseSBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50Q2hhcmFjdGVyPFNyY0NoYXJhY3RlclR5cGU+KCkgLT0gMjsKQEAgLTExODY5LDE0
ICsxMTg5MywxNSBAQCB2b2lkIENTU1BhcnNlcjo6c3ludGF4RXJyb3IoY29uc3QgTG9jYXRpb24m
IGxvY2F0aW9uLCBTeW50YXhFcnJvclR5cGUgZXJyb3IpCiB7CiAgICAgaWYgKCFpc0xvZ2dpbmdF
cnJvcnMoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgIHN3aXRjaCAoZXJyb3IpIHsKICAgICBjYXNlIFByb3BlcnR5RGVjbGFyYXRpb25FcnJvcjoK
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJJbnZhbGlkIENTUyBwcm9wZXJ0eSBkZWNs
YXJhdGlvbiBhdDogIik7CiAgICAgICAgIGJyZWFrOwotCiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVbmV4cGVjdGVkIENTUyB0b2tlbjogIik7CisgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi50b2tlbi5pczhCaXQoKSkKQEAgLTEx
ODg0LDcgKzExOTA5LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnN5bnRheEVycm9yKGNvbnN0IExvY2F0
aW9uJiBsb2NhdGlvbiwgU3ludGF4RXJyb3JUeXBlIGVycm9yKQogICAgIGVsc2UKICAgICAgICAg
YnVpbGRlci5hcHBlbmQobG9jYXRpb24udG9rZW4uY2hhcmFjdGVyczE2KCksIGxvY2F0aW9uLnRv
a2VuLmxlbmd0aCgpKTsKIAotICAgIGxvZ0Vycm9yKGJ1aWxkZXIudG9TdHJpbmcoKSwgbG9jYXRp
b24ubGluZU51bWJlcik7CisgICAgbG9nRXJyb3IoYnVpbGRlci50b1N0cmluZygpLCBsb2NhdGlv
bi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogCiAgICAgbV9pZ25vcmVFcnJv
cnNJbkRlY2xhcmF0aW9uID0gdHJ1ZTsKIH0KQEAgLTExODk0LDExICsxMTkxOSwxMCBAQCBib29s
IENTU1BhcnNlcjo6aXNMb2dnaW5nRXJyb3JzKCkKICAgICByZXR1cm4gbV9sb2dFcnJvcnMgJiYg
IW1faWdub3JlRXJyb3JzSW5EZWNsYXJhdGlvbjsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmxvZ0Vy
cm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIpCit2b2lkIENTU1BhcnNl
cjo6bG9nRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcikKIHsKLSAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE0MzEz
PiBDU1MgcGFyc2VyIGNvbnNvbGUgbWVzc2FnZSBlcnJvcnMgc2hvdWxkIGluY2x1ZGUgY29sdW1u
IG51bWJlcnMuCiAgICAgUGFnZUNvbnNvbGVDbGllbnQmIGNvbnNvbGUgPSBtX3N0eWxlU2hlZXQt
PnNpbmdsZU93bmVyRG9jdW1lbnQoKS0+cGFnZSgpLT5jb25zb2xlKCk7Ci0gICAgY29uc29sZS5h
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNTUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlLCBtX3N0eWxlU2hlZXQtPmJhc2VVUkwoKS5zdHJpbmcoKSwgbGluZU51bWJlciArIDEsIDAp
OworICAgIGNvbnNvbGUuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpDU1MsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgbWVzc2FnZSwgbV9zdHlsZVNoZWV0LT5iYXNlVVJMKCkuc3RyaW5nKCksIGxp
bmVOdW1iZXIgKyAxLCBjb2x1bW5OdW1iZXIgKyAxKTsKIH0KIAogUGFzc1JlZlB0cjxTdHlsZVJ1
bGVLZXlmcmFtZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcm
IG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4gcG9w
S2V5ZnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDY2ZTIxZjguLjZmYzM1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB+Q1NTUGFyc2VyKCk7CiAKLSAgICB2b2lkIHBhcnNlU2hlZXQoU3R5bGVT
aGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciA9IDAsIFJ1
bGVTb3VyY2VEYXRhTGlzdCogPSBudWxscHRyLCBib29sID0gZmFsc2UpOworICAgIHZvaWQgcGFy
c2VTaGVldChTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRMaW5l
TnVtYmVyLCBpbnQgc3RhcnRDb2x1bW5OdW1iZXIsIFJ1bGVTb3VyY2VEYXRhTGlzdCosIGJvb2wg
bG9nRXJyb3JzKTsKICAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHBhcnNlUnVsZShTdHls
ZVNoZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFN0eWxlS2V5
ZnJhbWU+IHBhcnNlS2V5ZnJhbWVSdWxlKFN0eWxlU2hlZXRDb250ZW50cyosIGNvbnN0IFN0cmlu
ZyYpOwogICAgIGJvb2wgcGFyc2VTdXBwb3J0c0NvbmRpdGlvbihjb25zdCBTdHJpbmcmKTsKQEAg
LTQ2NCw2ICs0NjQsOCBAQCBwcml2YXRlOgogICAgIGlubGluZSB1bnNpZ25lZCB0b2tlblN0YXJ0
T2Zmc2V0KCk7CiAgICAgaW5saW5lIFVDaGFyIHRva2VuU3RhcnRDaGFyKCk7CiAKKyAgICBpbmxp
bmUgdW5zaWduZWQgY3VycmVudENoYXJhY3Rlck9mZnNldCgpOworCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CiAgICAgaW5saW5lIGJvb2wgaXNJZGVudGlmaWVyU3RhcnQo
KTsKIApAQCAtNTkyLDcgKzU5NCwxMiBAQCBwcml2YXRlOgogICAgIGludCBtX3Rva2VuOwogICAg
IGludCBtX2xpbmVOdW1iZXI7CiAgICAgaW50IG1fdG9rZW5TdGFydExpbmVOdW1iZXI7CisgICAg
aW50IG1fdG9rZW5TdGFydENvbHVtbk51bWJlcjsKICAgICBpbnQgbV9sYXN0U2VsZWN0b3JMaW5l
TnVtYmVyOworICAgIGludCBtX2NvbHVtbk9mZnNldEZvckxpbmU7CisKKyAgICBpbnQgbV9zaGVl
dFN0YXJ0TGluZU51bWJlcjsKKyAgICBpbnQgbV9zaGVldFN0YXJ0Q29sdW1uTnVtYmVyOwogCiAg
ICAgYm9vbCBtX2FsbG93SW1wb3J0UnVsZXM7CiAgICAgYm9vbCBtX2FsbG93TmFtZXNwYWNlRGVj
bGFyYXRpb25zOwpAQCAtNjQyLDcgKzY0OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIGJv
b2wgaXNMb2dnaW5nRXJyb3JzKCk7Ci0gICAgdm9pZCBsb2dFcnJvcihjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwogCiAgICAgYm9vbCB2
YWxpZGF0ZUNhbGN1bGF0aW9uVW5pdChWYWx1ZVdpdGhDYWxjdWxhdGlvbiYsIFVuaXRzKTsKIApA
QCAtNjg2LDYgKzY5Myw3IEBAIHByaXZhdGU6CiAKIHN0cnVjdCBDU1NQYXJzZXI6OkxvY2F0aW9u
IHsKICAgICBpbnQgbGluZU51bWJlcjsKKyAgICBpbnQgY29sdW1uTnVtYmVyOwogICAgIENTU1Bh
cnNlclN0cmluZyB0b2tlbjsKIH07CiAKQEAgLTcxNCw2ICs3MjIsMTMgQEAgaW5saW5lIHVuc2ln
bmVkIENTU1BhcnNlcjo6dG9rZW5TdGFydE9mZnNldCgpCiAgICAgcmV0dXJuIG1fdG9rZW5TdGFy
dC5wdHIxNiAtIG1fZGF0YVN0YXJ0MTYuZ2V0KCk7CiB9CiAKK2lubGluZSB1bnNpZ25lZCBDU1NQ
YXJzZXI6OmN1cnJlbnRDaGFyYWN0ZXJPZmZzZXQoKQoreworICAgIGlmIChpczhCaXRTb3VyY2Uo
KSkKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjggLSBtX2RhdGFTdGFydDguZ2V0
KCk7CisgICAgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjE2IC0gbV9kYXRhU3RhcnQxNi5nZXQo
KTsKK30KKwogaW5saW5lIFVDaGFyIENTU1BhcnNlcjo6dG9rZW5TdGFydENoYXIoKQogewogICAg
IGlmIChpczhCaXRTb3VyY2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5jcHAKaW5kZXggNzQxY2I2NC4uNWI3ZTQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFN0eWxlU2hlZXRDb250
ZW50czo6cGFyc2VBdXRob3JTdHlsZVNoZWV0KGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNh
Y2hlZAogICAgIFN0cmluZyBzaGVldFRleHQgPSBjYWNoZWRTdHlsZVNoZWV0LT5zaGVldFRleHQo
Jmhhc1ZhbGlkTUlNRVR5cGUpOwogCiAgICAgQ1NTUGFyc2VyIHAocGFyc2VyQ29udGV4dCgpKTsK
LSAgICBwLnBhcnNlU2hlZXQodGhpcywgc2hlZXRUZXh0LCAwLCAwLCB0cnVlKTsKKyAgICBwLnBh
cnNlU2hlZXQodGhpcywgc2hlZXRUZXh0LCAwLCAwLCBudWxscHRyLCB0cnVlKTsKIAogICAgIC8v
IElmIHdlJ3JlIGxvYWRpbmcgYSBzdHlsZXNoZWV0IGNyb3NzLW9yaWdpbiwgYW5kIHRoZSBNSU1F
IHR5cGUgaXMgbm90IHN0YW5kYXJkLCByZXF1aXJlIHRoZSBDU1MKICAgICAvLyB0byBhdCBsZWFz
dCBzdGFydCB3aXRoIGEgc3ludGFjdGljYWxseSB2YWxpZCBDU1MgcnVsZS4KQEAgLTMxNiwxMyAr
MzE2LDEzIEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0eWxlU2hlZXQo
Y29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVkCiAKIGJvb2wgU3R5bGVTaGVldENvbnRl
bnRzOjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKIHsKLSAgICByZXR1cm4g
cGFyc2VTdHJpbmdBdExpbmUoc2hlZXRUZXh0LCAwLCBmYWxzZSk7CisgICAgcmV0dXJuIHBhcnNl
U3RyaW5nQXRMaW5lQW5kQ29sdW1uKHNoZWV0VGV4dCwgMCwgMCwgZmFsc2UpOwogfQogCi1ib29s
IFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzaGVl
dFRleHQsIGludCBzdGFydExpbmVOdW1iZXIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorYm9vbCBT
dHlsZVNoZWV0Q29udGVudHM6OnBhcnNlU3RyaW5nQXRMaW5lQW5kQ29sdW1uKGNvbnN0IFN0cmlu
ZyYgc2hlZXRUZXh0LCBpbnQgc3RhcnRMaW5lTnVtYmVyLCBpbnQgc3RhcnRDb2x1bW5OdW1iZXIs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIENTU1BhcnNlciBwKHBhcnNlckNvbnRleHQo
KSk7Ci0gICAgcC5wYXJzZVNoZWV0KHRoaXMsIHNoZWV0VGV4dCwgc3RhcnRMaW5lTnVtYmVyLCAw
LCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHAucGFyc2VTaGVldCh0aGlzLCBzaGVldFRleHQsIHN0
YXJ0TGluZU51bWJlciwgc3RhcnRDb2x1bW5OdW1iZXIsIG51bGxwdHIsIGNyZWF0ZWRCeVBhcnNl
cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaAppbmRleCBlMTRiMDdhLi42Y2EwM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFy
c2VBdXRob3JTdHlsZVNoZWV0KGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqLCBjb25zdCBTZWN1
cml0eU9yaWdpbiopOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VTdHJpbmcoY29uc3Qg
U3RyaW5nJik7Ci0gICAgYm9vbCBwYXJzZVN0cmluZ0F0TGluZShjb25zdCBTdHJpbmcmLCBpbnQg
c3RhcnRMaW5lTnVtYmVyLCBib29sKTsKKyAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lQW5kQ29s
dW1uKGNvbnN0IFN0cmluZyYsIGludCBzdGFydExpbmVOdW1iZXIsIGludCBzdGFydENvbHVtbk51
bWJlciwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmlu
ZGV4IGVjNzc2OGIuLmNkZmI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
SW5saW5lU3R5bGVTaGVldE93bmVyOjpJbmxpbmVTdHlsZVNoZWV0T3duZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IG1faXNQYXJzaW5nQ2hpbGRyZW4o
Y3JlYXRlZEJ5UGFyc2VyKQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQotICAgICwgbV9zdGFydExp
bmVOdW1iZXIoV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKQorICAgICwgbV9zdGFy
dFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3Jk
aW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSkKIHsKICAgICBpZiAoY3JlYXRlZEJ5UGFyc2VyICYm
IGRvY3VtZW50LnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpICYmICFkb2N1bWVudC5pc0luRG9j
dW1lbnRXcml0ZSgpKQotICAgICAgICBtX3N0YXJ0TGluZU51bWJlciA9IGRvY3VtZW50LnNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpLT50ZXh0UG9zaXRpb24oKS5tX2xpbmU7CisgICAgICAgIG1f
c3RhcnRUZXh0UG9zaXRpb24gPSBkb2N1bWVudC5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+
dGV4dFBvc2l0aW9uKCk7CiB9CiAKIElubGluZVN0eWxlU2hlZXRPd25lcjo6fklubGluZVN0eWxl
U2hlZXRPd25lcigpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3du
ZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIAog
ICAgIGlmICghaXNWYWxpZENTU0NvbnRlbnRUeXBlKGVsZW1lbnQsIG1fY29udGVudFR5cGUpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+YWxsb3dJbmxpbmVTdHlsZShkb2N1bWVudC51cmwoKSwgbV9zdGFydExpbmVOdW1iZXIpKQor
ICAgIGlmICghZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW5saW5lU3R5
bGUoZG9jdW1lbnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcmllczsKQEAgLTE0
NCw3ICsxNDQsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIG1fc2hlZXQgPSBDU1NTdHls
ZVNoZWV0OjpjcmVhdGVJbmxpbmUoZWxlbWVudCwgVVJMKCksIGRvY3VtZW50LmlucHV0RW5jb2Rp
bmcoKSk7CiAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNl
KCkpOwogICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQudGl0bGUoKSk7Ci0gICAgbV9zaGVl
dC0+Y29udGVudHMoKS5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCBtX3N0YXJ0TGluZU51bWJlci56
ZXJvQmFzZWRJbnQoKSwgbV9pc1BhcnNpbmdDaGlsZHJlbik7CisgICAgbV9zaGVldC0+Y29udGVu
dHMoKS5wYXJzZVN0cmluZ0F0TGluZUFuZENvbHVtbih0ZXh0LCBtX3N0YXJ0VGV4dFBvc2l0aW9u
Lm1fbGluZS56ZXJvQmFzZWRJbnQoKSwgbV9zdGFydFRleHRQb3NpdGlvbi5tX2NvbHVtbi56ZXJv
QmFzZWRJbnQoKSwgbV9pc1BhcnNpbmdDaGlsZHJlbik7CiAKICAgICBtX2xvYWRpbmcgPSBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oCmluZGV4IDZm
NDIyYzkuLjFlZjNlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1BhcnNpbmdD
aGlsZHJlbjsKICAgICBib29sIG1fbG9hZGluZzsKLSAgICBXVEY6Ok9yZGluYWxOdW1iZXIgbV9z
dGFydExpbmVOdW1iZXI7CisgICAgV1RGOjpUZXh0UG9zaXRpb24gbV9zdGFydFRleHRQb3NpdGlv
bjsKICAgICBBdG9taWNTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBBdG9taWNTdHJpbmcgbV9t
ZWRpYTsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAwOGJkYmVlLi42
OWZlMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6
OmVuc3VyZVNvdXJjZURhdGEoKQogCiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gbmV3
U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgYXV0byBydWxl
U291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0Pigp
OwotICAgIGNyZWF0ZUNTU1BhcnNlcihtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkp
LT5wYXJzZVNoZWV0KG5ld1N0eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4
dCgpLCAwLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7CisgICAgY3JlYXRlQ1NTUGFyc2Vy
KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSktPnBhcnNlU2hlZXQobmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIDAsIDAsIHJ1bGVTb3VyY2VE
YXRhUmVzdWx0LmdldCgpLCBmYWxzZSk7CiAgICAgbV9wYXJzZWRTdHlsZVNoZWV0LT5zZXRTb3Vy
Y2VEYXRhKFdURjo6bW92ZShydWxlU291cmNlRGF0YVJlc3VsdCkpOwogICAgIHJldHVybiBtX3Bh
cnNlZFN0eWxlU2hlZXQtPmhhc1NvdXJjZURhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CmluZGV4IDBjY2IwZjIuLjM1NjhlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE1LTAzLTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIHBhcnNlciBlcnJvcnMgaW4gdGhlIGNv
bnNvbGUgc2hvdWxkIGluY2x1ZGUgY29sdW1uIG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDMxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xl
TWVzc2FnZUltcGwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBs
LnByb3RvdHlwZS5fbGlua2lmeUxvY2F0aW9uKToKKyAgICAgICAgQ29sdW1uIG51bWJlcnMgaW4g
Y29uc29sZSBtZXNzYWdlcyBhcmUgYWxzbyAxIGJhc2VkIGFuZCBzaG91bGQgYmUgYWRqdXN0ZWQu
CisKIDIwMTUtMDMtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODEzNjcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZUlt
cGwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xl
TWVzc2FnZUltcGwuanMKaW5kZXggNTM1ZGJjYy4uM2Y0Njk3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VJbXBsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVN
ZXNzYWdlSW1wbC5qcwpAQCAtMTk5LDYgKzE5OSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZUltcGwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gQ29uc29sZU1lc3NhZ2Ug
c3RhY2sgdHJhY2UgbGluZSBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1i
ZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAtIDEgOiAwOworICAgICAgICBjb2x1bW5OdW1i
ZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKIAogICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKICAgICB9LAo=
</data>
<flag name="review"
          id="273329"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>