<?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>92739</bug_id>
          
          <creation_ts>2012-07-31 04:13:59 -0700</creation_ts>
          <short_desc>Web Inspector: Protocol: Add &quot;namedFlowCreated&quot; and &quot;namedFlowRemoved&quot; events</short_desc>
          <delta_ts>2012-08-06 09:40:16 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93082</dependson>
          <blocked>90786</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Poenaru">andreigpoenaru</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>682905</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-31 04:13:59 -0700</bug_when>
    <thetext>Extends the protocol with &quot;namedFlowCreated&quot; and &quot;namedFlowRemoved&quot; events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682907</commentid>
    <comment_count>1</comment_count>
      <attachid>155486</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-31 04:15:02 -0700</bug_when>
    <thetext>Created attachment 155486
Inspector Extension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682994</commentid>
    <comment_count>2</comment_count>
      <attachid>155521</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-31 06:53:15 -0700</bug_when>
    <thetext>Created attachment 155521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685644</commentid>
    <comment_count>3</comment_count>
      <attachid>155521</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-02 12:00:32 -0700</bug_when>
    <thetext>Comment on attachment 155521
Patch

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:540
&gt; +    int nodeId = m_domAgent-&gt;boundNodeId(static_cast&lt;Node*&gt;(document));

There is no need to cast document to Node, Document is a Node.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:541
&gt; +    if (!nodeId)

I am not sure this is what you want. You only report creation / destruction of the flows when document node on the front-end is visible. So every time document node is received on the front-end (user expanded an &lt;iframe&gt; tag), you want to query for document&apos;s existing named flows and dispatch corresponding events.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:550
&gt; +    int nodeId = m_domAgent-&gt;boundNodeId(static_cast&lt;Node*&gt;(document));

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686389</commentid>
    <comment_count>4</comment_count>
      <attachid>156285</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-03 01:21:02 -0700</bug_when>
    <thetext>Created attachment 156285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686481</commentid>
    <comment_count>5</comment_count>
      <attachid>156285</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-03 02:31:56 -0700</bug_when>
    <thetext>Comment on attachment 156285
Patch

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

Couple more nits, one of them depends on another bug Alexander is filing.

&gt; Source/WebCore/dom/WebKitNamedFlowCollection.cpp:83
&gt; +#if ENABLE(INSPECTOR)

You should not surround Instrumentation calls with #if ENABLE.

&gt; Source/WebCore/dom/WebKitNamedFlowCollection.cpp:101
&gt; +#if ENABLE(INSPECTOR)

ditto

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:540
&gt; +    int nodeId = m_domAgent-&gt;pushNodePathToFrontend(document);

pushChildNodesToFrontend implies there is a front-end.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:542
&gt; +    if (m_frontend)

You should not make this check. In fact, you should not be getting into this method when there is no m_frontend. It is a bug in InspectorCSSAgent that needs to be addressed. I&apos;ll ask apavlov@ to handle it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686482</commentid>
    <comment_count>6</comment_count>
      <attachid>156285</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-03 02:32:08 -0700</bug_when>
    <thetext>Comment on attachment 156285
Patch

r- per comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686556</commentid>
    <comment_count>7</comment_count>
      <attachid>156323</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-03 04:20:46 -0700</bug_when>
    <thetext>Created attachment 156323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688085</commentid>
    <comment_count>8</comment_count>
      <attachid>156323</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-06 06:34:38 -0700</bug_when>
    <thetext>Comment on attachment 156323
Patch

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

Looks good, once issue below...

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:540
&gt; +    m_frontend-&gt;namedFlowCreated(m_domAgent-&gt;pushNodePathToFrontend(document), name.string());

Sorry for not spotting this earlier. By design, protocol should not emit any events unless they are explicitly requested by the client. In your case, attaching to the backend will start populating DOM with nodes and issuing these events. So we need to figure out how to prevent that from happening. What we try to do in such cases is:
- events are not generated unless getNamedFlowCollection is called for given document node
- once getNamedFlowCollection was called at least once, namedFromCreated/Deleted events start flowing to the front-end

That will make behaviour consistent: once you asked for the present state, you get update notifications, you would not need to call pushNodePathToFrontend anymore - boundNodeId would be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688139</commentid>
    <comment_count>9</comment_count>
      <attachid>156695</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-06 07:58:50 -0700</bug_when>
    <thetext>Created attachment 156695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688209</commentid>
    <comment_count>10</comment_count>
      <attachid>156695</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 09:40:12 -0700</bug_when>
    <thetext>Comment on attachment 156695
Patch

Clearing flags on attachment: 156695

Committed r124778: &lt;http://trac.webkit.org/changeset/124778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688210</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 09:40:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>155486</attachid>
            <date>2012-07-31 04:15:02 -0700</date>
            <delta_ts>2012-07-31 04:15:02 -0700</delta_ts>
            <desc>Inspector Extension</desc>
            <filename>Inspector-extension2.json</filename>
            <type>application/octet-stream</type>
            <size>3099</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ImRvbWFpbiI6ICJDU1MiLAoidHlwZXMiOiBbCgl7CgkJImlkIjogIlJlZ2lvbiIsCgkJInR5cGUi
OiAib2JqZWN0IiwKCQkicHJvcGVydGllcyI6IFsKCQkJeyAibmFtZSI6ICJyZWdpb25PdmVyc2V0
IiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIm92ZXJzZXQiLCAiZml0IiwgImVtcHR5Il0s
ICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVyc2V0XCIgYXR0cmlidXRlIG9mIGEgTmFtZWQgRmxv
dy4iIH0sCgkJCXsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgY29ycmVzcG9uZGluZyBET00gbm9kZSBpZC4iIH0KCQldLAoJCSJkZXNj
cmlwdGlvbiI6ICJUaGlzIG9iamVjdCByZXByZXNlbnRzIGEgcmVnaW9uIHRoYXQgZmxvd3MgZnJv
bSBhIE5hbWVkIEZsb3cuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJfSwKCXsKCQkiaWQiOiAiTmFtZWRG
bG93IiwKCQkidHlwZSI6ICJvYmplY3QiLAoJCSJwcm9wZXJ0aWVzIjogWwoJCQl7ICJuYW1lIjog
Im5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3Vt
ZW50IG5vZGUgaWQuIiB9LAoJCQl7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVyLiIgfSwKCQkJeyAibmFtZSI6ICJv
dmVyc2V0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVyc2V0
XCIgYXR0cmlidXRlIG9mIGEgTmFtZWQgRmxvdy4iIH0sCgkJCXsgIm5hbWUiOiAiY29udGVudCIs
ICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJET00uTm9kZUlkIiB9LCAiZGVz
Y3JpcHRpb24iOiAiQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBmbG93IGludG8gdGhlIE5hbWVkIEZs
b3cuIiB9LAoJCQl7ICJuYW1lIjogInJlZ2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6
IHsgIiRyZWYiOiAiUmVnaW9uIiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2YgcmVnaW9u
cyBhc3NvY2lhdGVkIHdpdGggdGhlIE5hbWVkIEZsb3cuIiB9CgkJXSwKCQkiZGVzY3JpcHRpb24i
OiAiVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIE5hbWVkIEZsb3cuIiwKCQkiaGlkZGVuIjogdHJ1
ZQoJfQpdLAoiY29tbWFuZHMiOiBbCgl7CgkJIm5hbWUiOiAiZ2V0TmFtZWRGbG93Q29sbGVjdGlv
biIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlk
IiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9k
ZSBpZCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBOYW1lZCBGbG93IENvbGxlY3Rpb24uIiB9CiAgICAg
ICAgXSwKCQkicmV0dXJucyI6IFsKCQkJeyAibmFtZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAi
YXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogIk5hbWVkRmxvdyIgfSwgImRlc2NyaXB0aW9uIjog
IkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVkIEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0K
CQldLAoJCSJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBk
b2N1bWVudC4iLAoJCSJoaWRkZW4iOiB0cnVlCgl9LAoJewoJCSJuYW1lIjogImdldEZsb3dCeU5h
bWUiLAoJCSJwYXJhbWV0ZXJzIjogWwoJCQl7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRP
TS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAoJCQl7
ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQg
RmxvdyBpZGVudGlmaWVyLiIgfQoJCV0sCgkJInJldHVybnMiOiBbCgkJCXsgIm5hbWUiOiAibmFt
ZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2NyaXB0aW9uIjogIkEgTmFtZWQgRmxv
dy4iIH0KCQldLAoJCSJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93IGlkZW50
aWZpZWQgYnkgdGhlIGdpdmVuIG5hbWUiLAoJCSJoaWRkZW4iOiB0cnVlCgl9Cl0sCiJldmVudHMi
OiBbCgl7CgkJIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRlZCIsCgkJInBhcmFtZXRlcnMiOiBbCgkJ
CXsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCgkJCXsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1l
ZCBGbG93LiIgfQoJCV0sCgkJImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93
IGlzIGNyZWF0ZWQuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJfSwKCXsKCQkibmFtZSI6ICJuYW1lZEZs
b3dSZW1vdmVkIiwKCQkicGFyYW1ldGVycyI6IFsKCQkJeyAibmFtZSI6ICJub2RlSWQiLCAiJHJl
ZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIg
fSwKCQkJeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQoJCV0sCgkJImRl
c2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIHJlbW92ZWQ6IGhhcyBubyBh
c3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lvbnMuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJ
fSwKCXsKCQkibmFtZSI6ICJyZWdpb25MYXlvdXRVcGRhdGUiLAoJCSJwYXJhbWV0ZXJzIjogWwoJ
CQl7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAoJCQl7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBOYW1lZCBG
bG93IHdob3NlIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIgfQoJCV0sCgkJImRlc2NyaXB0aW9u
IjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93J3MgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiwK
CQkiaGlkZGVuIjogdHJ1ZQoJfQpd
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155521</attachid>
            <date>2012-07-31 06:53:15 -0700</date>
            <delta_ts>2012-08-03 01:21:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92739</filename>
            <type>text/plain</type>
            <size>18174</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDQzOTI1Li5kNTMxMjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDct
MzEgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dS
ZW1vdmVkIiBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdGVzdCBzbyB0aGF0IGl0IHZhbGlkYXRlcyB0aGUgaW1wbGVtZW50ZWQg
ZXZlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sOgorCiAyMDEyLTA3LTMxICBTaGlueWEgS2F3
YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPbGRlciBTaGFkb3dET00g
aXMgc3RpbGwgcmVuZGVyZWQgd2hlbiBhIG5ldyBTaGFkb3dET00gaXMgYWRkZWQgd2hlbiB0aGV5
IGRvbid0IGhhdmUgYW55IEluc2VydGlvblBvaW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1j
b21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggNGIwYzNlNy4uMTM5MjJlNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5k
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2Nv
bC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw5IEBACi1UZXN0
cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgorVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBh
bmQgZXZlbnRzOgogCiBnZXROYW1lZEZsb3dDb2xsZWN0aW9uIEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5
TmFtZSBCdWcgOTE4NTUKK25hbWVkRmxvd0NyZWF0ZWQgQnVnIDkyNzM5CituYW1lZEZsb3dSZW1v
dmVkIEJ1ZyA5MjczOQogCiAKIFJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uCkBA
IC0xOSwzICsyMSw5IEBAIFJ1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lMgogPT09IE5hbWUgRmxv
dyAiZmxvdzQiIGZyb20gbWFpbiBkb2N1bWVudCA9PT0KIFRoZXJlIGlzIG5vIE5hbWVkIEZsb3cg
ImZsb3c0IiBpbiB0aGUgbWFpbiBkb2N1bWVudAogCitSdW5uaW5nOiB0ZXN0TmFtZWRGbG93Q3Jl
YXRlZAorTmFtZWRGbG93Q3JlYXRlZDogInRtcE5hbWVkRmxvdyIKKworUnVubmluZzogdGVzdE5h
bWVkRmxvd1JlbW92ZWQKK05hbWVkRmxvd1JlbW92ZWQ6ICJ0bXBOYW1lZEZsb3ciCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMt
Y29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3Nz
LXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCA5Mzk2NmE0Li5lOTI1NzE3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy5odG1sCkBAIC0xOCw2ICsxOCwyMiBAQCBmdW5jdGlvbiBjcmVhdGVE
eW5hbWljRWxlbWVudHMoKQogICAgIHJ1blRlc3QoKTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlTmFt
ZWRGbG93KCkKK3sKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFy
dGljbGUiKTsKKyAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOworICAgIGFydGljbGUuc3R5
bGUud2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoYXJ0aWNsZSk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZU5hbWVkRmxvdygpCit7
CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wQXJ0aWNsZSIp
OworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhcnRpY2xlKTsKK30KKwogZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKQEAg
LTk5LDYgKzExNSw0NSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBuZXh0KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5hbWVk
Rmxvd0NyZWF0ZWQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRz
Lk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZU5hbWVkRmxvdygpIik7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisK
KyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93Iikg
eworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1l
ZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0TmFtZWRGbG93UmVtb3ZlZChuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgY2Fs
bGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
cmVtb3ZlTmFtZWRGbG93KCkiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZl
bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5h
bWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAoZXZl
bnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgeworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiTmFtZWRGbG93UmVtb3ZlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIF0pOwogfQogPC9zY3Jp
cHQ+CkBAIC0xMDYsMTAgKzE2MSwxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogPGJvZHkgb25sb2Fk
PSJjcmVhdGVEeW5hbWljRWxlbWVudHMoKSI+CiA8cD4KLVRlc3RzIHRoZSBmb2xsb3dpbmcgY29t
bWFuZHM6CitUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiA8dWw+CiAg
ICAgPGxpPmdldE5hbWVkRmxvd0NvbGxlY3Rpb24gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjA3Ij5CdWcgOTE2MDc8L2E+PC9saT4KICAgICA8bGk+
Z2V0Rmxvd0J5TmFtZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4NTUiPkJ1ZyA5MTg1NTwvYT48L2xpPgorICAgIDxsaT5uYW1lZEZsb3dDcmVhdGVk
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+
QnVnIDkyNzM5PC9hPjwvbGk+CisgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8L2E+
PC9saT4KIDwvdWw+CiA8L3A+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTdjMGFkLi5lOWFmMGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDctMzEgIEFuZHJlaSBQb2VuYXJ1ICA8cG9l
bmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdG9jb2w6IEFkZCAi
bmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dSZW1vdmVkIiBldmVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgIm5hbWVk
Rmxvd0NyZWF0ZWQiIGFuZCAibmFtZWRGbG93UmVtb3ZlZCIgZXZlbnRzLgorCisgICAgICAgIE1v
ZGlmaWVkIHRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFu
ZHMuaHRtbC4KKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dX
aXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpk
aXNjYXJkTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFt
ZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93
SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93Q3JlYXRlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dSZW1vdmVkLmNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fbmFtZWRGbG93
UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUu
c3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIu
cHJvdG90eXBlLm5hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rp
c3BhdGNoZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92ZWQpOgorCiAyMDEyLTA3LTMxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPbGRlciBTaGFk
b3dET00gaXMgc3RpbGwgcmVuZGVyZWQgd2hlbiBhIG5ldyBTaGFkb3dET00gaXMgYWRkZWQgd2hl
biB0aGV5IGRvbid0IGhhdmUgYW55IEluc2VydGlvblBvaW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCBjNTBlMDU3Li45Y2Fj
NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTc5LDYgKzgwLDEwIEBAIFBhc3NSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5h
bWUoY29uc3QKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFt
ZWRGbG93OjpjcmVhdGUodGhpcywgZmxvd05hbWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3
Rmxvdy5nZXQoKSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3ctPm5hbWUo
KSk7CisjZW5kaWYKKwogICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2UoKTsKIH0KIApAQCAtOTIs
NiArOTcsMTAgQEAgdm9pZCBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJkTmFtZWRG
bG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VSVChtX25hbWVkRmxvd3Mu
Y29udGFpbnMobmFtZWRGbG93KSk7CiAKICAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxv
dyk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5hbWVkRmxvdy0+bmFtZSgpKTsKKyNl
bmRpZgogfQogCiB2b2lkIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246OmRvY3VtZW50RGVzdHJv
eWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA4OGU4ZjNi
Li43NjliZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0y
MzUwLDYgKzIzNTAsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdHlsZVNo
ZWV0SWQiLCAiJHJlZiI6ICJTdHlsZVNoZWV0SWQiIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuZXZlciBhIHN0eWxlc2hlZXQg
aXMgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgY2xpZW50IG9wZXJhdGlvbi4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxv
d0NyZWF0ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJ
ZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBp
cyBjcmVhdGVkLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVt
b3ZlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlv
biI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50
aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBp
cyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBjb250ZW50IG5vZGVzIGFuZCByZWdpb25zLiIs
CisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAg
XQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAppbmRleCA0ZGIyN2I2Li45ZDkwNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTUzNSw2ICs1MzUsMjYgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQogICAgICAgICBtX2Zyb250
ZW5kLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogfQogCit2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCit7CisgICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlk
KHN0YXRpY19jYXN0PE5vZGUqPihkb2N1bWVudCkpOworICAgIGlmICghbm9kZUlkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9udGVuZC0+bmFt
ZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworfQorCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5k
Tm9kZUlkKHN0YXRpY19jYXN0PE5vZGUqPihkb2N1bWVudCkpOworICAgIGlmICghbm9kZUlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9udGVu
ZC0+bmFtZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworfQorCiBib29sIElu
c3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1Nl
bGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3Jj
ZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCmluZGV4IDc2ZDg3NzkuLmYyNGE0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05Nyw2ICs5Nyw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgcmVz
ZXQoKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgdm9pZCBkaWRD
cmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBz
ZXVkb0NsYXNzZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldElubGlu
ZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDgzOGU4NjIuLjg4NDI3MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCkBAIC0yMzEsNiArMjMxLDE4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
CiAgICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50
KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCisg
ICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdl
bnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkK
KyAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZSk7Cit9
CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQogewogICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JET01BZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDYxNDdmNzdkLi4xZTY5ZGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0x
MTIsNiArMTEyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRD
aGFuZ2VkKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxl
bWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dS
b290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVh
dGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdl
KiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0
YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjg3LDYgKzI4OSw4IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVs
ZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1l
ZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwog
CiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7
CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyopOwpAQCAtNTUzLDYgKzU1NywyNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1JvbwogI2VuZGlm
CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFt
ZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBkaWRD
cmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
bW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwg
bmFtZSk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qcwppbmRleCA1YWU1MjE1Li4wZmM0ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01Niw3ICs1Niw5IEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0
aW9uKHJ1bGVBcnJheSkKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewog
ICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAotICAgIE1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiCisgICAgTWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCisgICAgTmFtZWRGbG93
Q3JlYXRlZDogIk5hbWVkRmxvd0NyZWF0ZWQiLAorICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1l
ZEZsb3dSZW1vdmVkIgogfQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUg
PSB7CkBAIC0zNDAsNiArMzQyLDU0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2Rl
SWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8K
KyAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIC8qKgorICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3Vt
ZW50fSByb290CisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2Fu
dCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50CisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBkb2N1bWVudE5vZGVJ
ZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7CisgICAgICAgIH0KKworICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9j
dW1lbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLworICAgIF9u
YW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLyoqCisgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9IHJv
b3QKKyAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socm9vdCkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQgd2Ugb25seSB3YW50IHN1cHBv
cnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQKKyAgICAgICAgICAgIGlmIChk
b2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1
bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAg
fSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5bGVTaGVldElkfSBzdHls
ZVNoZWV0SWQKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VGV4dAogICAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gbWFqb3JDaGFuZ2UKQEAgLTEyNjUsNiArMTMxNSwyNCBAQCBXZWJJbnNwZWN0b3Iu
Q1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0
aW9uKHN0eWxlU2hlZXRJZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9maXJlU3R5
bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKi8KKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1
bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZs
b3dDcmVhdGVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAgICAgKi8KKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1l
ZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="165010"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156285</attachid>
            <date>2012-08-03 01:21:02 -0700</date>
            <delta_ts>2012-08-03 04:20:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92739</filename>
            <type>text/plain</type>
            <size>18869</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZThlY2ZjLi4yZjI4NThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MDMgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dS
ZW1vdmVkIiBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdGVzdCBzbyB0aGF0IGl0IHZhbGlkYXRlcyB0aGUgaW1wbGVtZW50ZWQg
ZXZlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sOgorCiAyMDEyLTA4LTAyICBBYmhpc2hlayBB
cnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggZHVlIHRvIGxheWVy
IG5vdCByZW1vdmVkIGZyb20gcGFyZW50IGZvciBhbm9ueW1vdXMgYmxvY2suCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wt
Y3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CmluZGV4IDRiMGMzZTcuLjEzOTIyZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJl
Z2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcg
KzEsOSBAQAotVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK1Rlc3RzIHRoZSBmb2xsb3dp
bmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIAogZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiBCdWcgOTE2
MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CituYW1lZEZsb3dDcmVhdGVkIEJ1ZyA5MjczOQor
bmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKIAogCiBSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93
Q29sbGVjdGlvbgpAQCAtMTksMyArMjEsOSBAQCBSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZTIK
ID09PSBOYW1lIEZsb3cgImZsb3c0IiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiBUaGVyZSBpcyBu
byBOYW1lZCBGbG93ICJmbG93NCIgaW4gdGhlIG1haW4gZG9jdW1lbnQKIAorUnVubmluZzogdGVz
dE5hbWVkRmxvd0NyZWF0ZWQKK05hbWVkRmxvd0NyZWF0ZWQ6ICJ0bXBOYW1lZEZsb3ciCisKK1J1
bm5pbmc6IHRlc3ROYW1lZEZsb3dSZW1vdmVkCitOYW1lZEZsb3dSZW1vdmVkOiAidG1wTmFtZWRG
bG93IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKaW5kZXggOTM5NjZhNC4uZTkyNTcx
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbApAQCAtMTgsNiArMTgsMjIgQEAgZnVu
Y3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKICAgICBydW5UZXN0KCk7CiB9CiAKK2Z1bmN0
aW9uIGNyZWF0ZU5hbWVkRmxvdygpCit7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJhcnRpY2xlIik7CisgICAgYXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKKyAg
ICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gInRtcE5hbWVkRmxvdyI7CisKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFydGljbGUpOworfQorCitmdW5jdGlvbiByZW1vdmVO
YW1lZEZsb3coKQoreworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRtcEFydGljbGUiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXJ0aWNsZSk7
Cit9CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVs
ZW1lbnRzIik7CkBAIC05OSw2ICsxMTUsNDUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3ROYW1lZEZsb3dDcmVhdGVkKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVOYW1lZEZsb3coKSIpOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgY2FsbGJh
Y2ssIHRoaXMpOworCisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRt
cE5hbWVkRmxvdyIpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgi
WyFdIEZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0
ZWQ6IFwidG1wTmFtZWRGbG93XCIiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5hbWVkRmxvd1JlbW92
ZWQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxv
d1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoInJlbW92ZU5hbWVkRmxvdygpIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7CisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd1JlbW92ZWQ6IFwidG1wTmFtZWRGbG93XCIiKTsK
KyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICBd
KTsKIH0KIDwvc2NyaXB0PgpAQCAtMTA2LDEwICsxNjEsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAK
IDxib2R5IG9ubG9hZD0iY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkiPgogPHA+Ci1UZXN0cyB0aGUg
Zm9sbG93aW5nIGNvbW1hbmRzOgorVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhbmQgZXZl
bnRzOgogPHVsPgogICAgIDxsaT5nZXROYW1lZEZsb3dDb2xsZWN0aW9uIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwNyI+QnVnIDkxNjA3PC9hPjwv
bGk+CiAgICAgPGxpPmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KKyAgICA8bGk+bmFt
ZWRGbG93Q3JlYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTI3MzkiPkJ1ZyA5MjczOTwvYT48L2xpPgorICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVk
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+
QnVnIDkyNzM5PC9hPjwvbGk+CiA8L3VsPgogPC9wPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZiOGEzMi4u
OWQwZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTAzICBBbmRyZWkg
UG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBy
b3RvY29sOiBBZGQgIm5hbWVkRmxvd0NyZWF0ZWQiIGFuZCAibmFtZWRGbG93UmVtb3ZlZCIgZXZl
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjcz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudGVkICJuYW1lZEZsb3dDcmVhdGVkIiBhbmQgIm5hbWVkRmxvd1JlbW92ZWQiIGV2ZW50cy4K
KworICAgICAgICBNb2RpZmllZCB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwuCisKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
OjplbnN1cmVGbG93V2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93
Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlTmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0NyZWF0ZWQuY2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dD
cmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93UmVtb3ZlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlLnN0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dS
ZW1vdmVkKToKKwogMjAxMi0wOC0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1Y4XSBNYWtlIHY4Tm9uU3RyaW5nVmFsdWVUb1dlYkNvcmVTdHJpbmcg
YSBzdGF0aWMgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
Q29sbGVjdGlvbi5jcHAKaW5kZXggYzUwZTA1Ny4uOWNhYzc1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CkBAIC03OSw2ICs4MCwxMCBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0CiAgICAgUmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZs
b3dOYW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0KCkpOwogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5h
bWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LT5uYW1lKCkpOworI2VuZGlmCisKICAgICByZXR1
cm4gbmV3Rmxvdy5yZWxlYXNlKCk7CiB9CiAKQEAgLTkyLDYgKzk3LDEwIEBAIHZvaWQgV2ViS2l0
TmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqIG5h
bWVkRmxvdykKICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwog
CiAgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyht
X2RvY3VtZW50LCBuYW1lZEZsb3ctPm5hbWUoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJLaXRO
YW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZTZhNDFmZi4uNGYwYWFkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjM3Myw2ICsyMzczLDI0IEBACiAgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVT
aGVldElkIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRmlyZWQgd2hlbmV2ZXIgYSBzdHlsZXNoZWV0IGlzIGNoYW5nZWQgYXMgYSByZXN1bHQg
b2YgdGhlIGNsaWVudCBvcGVyYXRpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dDcmVhdGVkIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2Rl
SWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBu
b2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5h
bWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgY3JlYXRlZC4iLAorICAgICAgICAg
ICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd1JlbW92ZWQiLAorICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIs
ICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUg
aWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5h
bWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29j
aWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVnaW9ucy4iLAorICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGRiMjdiNi4uMzg3
Mjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC01MzUsNiArNTM1LDIyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZC0+bWVkaWFRdWVyeVJlc3VsdENo
YW5nZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGlu
dCBub2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGRvY3VtZW50KTsK
KworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dDcmVh
dGVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVQYXRoVG9G
cm9udGVuZChkb2N1bWVudCk7CisKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9u
dGVuZC0+bmFtZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworfQorCiBib29s
IEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9G
b3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDc2ZDg3NzkuLmYyNGE0MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05Nyw2ICs5Nyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQg
cmVzZXQoKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgdm9pZCBk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwor
ICAgIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNl
ZFBzZXVkb0NsYXNzZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldElu
bGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGFjNDc4Y2MuLjc2OGI2NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNjYsNiArMTY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93
Um9vdCopOwogICAgIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93
Um9vdCopOwogCisgICAgaW50IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwogICAgIE5v
ZGUqIG5vZGVGb3JJZChpbnQgbm9kZUlkKTsKICAgICBpbnQgYm91bmROb2RlSWQoTm9kZSopOwog
ICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKQEAgLTIxMCw3ICsyMTEsNiBA
QCBwcml2YXRlOgogICAgIE5vZGUqIGFzc2VydEVkaXRhYmxlTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQpOwogICAgIEVsZW1lbnQqIGFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmlu
ZyosIGludCBub2RlSWQpOwogCi0gICAgaW50IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSop
OwogICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQpOwogCiAgICAg
Ym9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBpbnQgdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGY5NDdi
NzYuLmU3MDNkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMzIsNiArMjMyLDE4IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1CiAgICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCBy
b290KTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVk
Rmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKEluc3Bl
Y3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNT
U0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1lbnQs
IG5hbWUpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFt
ZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoSW5z
cGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
Q1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVu
dCwgbmFtZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1v
dmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQog
ewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGVjY2I1MDAuLjFjMWQ0NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTExMyw2ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hh
ZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2ls
bFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOworICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFBhZ2UqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzcyhQYWdlKik7CkBAIC0yOTAsNiAr
MjkyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFk
b3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9v
dCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOworICAgIHN0YXRpYyB2b2lkIGRp
ZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVOYW1lZEZs
b3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKik7CkBAIC01NTcsNiArNTYxLDI0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93
Um9vCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisg
ICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1l
bnQsIG5hbWUpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQorICAgICAgICBkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IGRvY3VtZW50LCBuYW1lKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqIHBhZ2UsIGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDVhZTUyMTUuLjBmYzRkNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTU2
LDcgKzU2LDkgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXls
b2FkID0gZnVuY3Rpb24ocnVsZUFycmF5KQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMgPSB7CiAgICAgU3R5bGVTaGVldENoYW5nZWQ6ICJTdHlsZVNoZWV0Q2hhbmdlZCIsCi0g
ICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIKKyAg
ICBNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZDogIk1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkIiwKKyAg
ICBOYW1lZEZsb3dDcmVhdGVkOiAiTmFtZWRGbG93Q3JlYXRlZCIsCisgICAgTmFtZWRGbG93UmVt
b3ZlZDogIk5hbWVkRmxvd1JlbW92ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZSA9IHsKQEAgLTM0MCw2ICszNDIsNTQgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RP
TUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqLworICAgIF9uYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJ
ZCwgbmFtZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLyoqCisgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRE9NRG9jdW1lbnR9IHJvb3QKKyAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2socm9vdCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQg
d2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCB7IGRv
Y3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2su
YmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQu
Tm9kZUlkfSBkb2N1bWVudE5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICovCisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1l
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAvKioKKyAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01E
b2N1bWVudH0gcm9vdAorICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyb290
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBvbmx5
IHdhbnQgc3VwcG9ydCBmb3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAorICAgICAg
ICAgICAgaWYgKGRvY3VtZW50Tm9kZUlkICE9PSByb290LmlkKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIHsgZG9jdW1lbnRO
b2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChjYWxsYmFjay5iaW5kKHRo
aXMpKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtDU1NBZ2VudC5TdHlsZVNo
ZWV0SWR9IHN0eWxlU2hlZXRJZAogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdUZXh0CiAgICAg
ICogQHBhcmFtIHtib29sZWFufSBtYWpvckNoYW5nZQpAQCAtMTI2NSw2ICsxMzE1LDI0IEBAIFdl
Ykluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBzdHlsZVNoZWV0Q2hh
bmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElkKQogICAgIHsKICAgICAgICAgdGhpcy5fY3NzTW9k
ZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLworICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1
bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3NzTW9k
ZWwuX25hbWVkRmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLworICAgIG5hbWVkRmxvd1JlbW92ZWQ6
IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3Nz
TW9kZWwuX25hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOwogICAgIH0KIH0K
IAo=
</data>
<flag name="review"
          id="165968"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156323</attachid>
            <date>2012-08-03 04:20:46 -0700</date>
            <delta_ts>2012-08-06 07:58:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92739</filename>
            <type>text/plain</type>
            <size>18699</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZThlY2ZjLi4yZjI4NThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MDMgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dS
ZW1vdmVkIiBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdGVzdCBzbyB0aGF0IGl0IHZhbGlkYXRlcyB0aGUgaW1wbGVtZW50ZWQg
ZXZlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sOgorCiAyMDEyLTA4LTAyICBBYmhpc2hlayBB
cnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggZHVlIHRvIGxheWVy
IG5vdCByZW1vdmVkIGZyb20gcGFyZW50IGZvciBhbm9ueW1vdXMgYmxvY2suCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wt
Y3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CmluZGV4IDRiMGMzZTcuLjEzOTIyZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJl
Z2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcg
KzEsOSBAQAotVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK1Rlc3RzIHRoZSBmb2xsb3dp
bmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIAogZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiBCdWcgOTE2
MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CituYW1lZEZsb3dDcmVhdGVkIEJ1ZyA5MjczOQor
bmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKIAogCiBSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93
Q29sbGVjdGlvbgpAQCAtMTksMyArMjEsOSBAQCBSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZTIK
ID09PSBOYW1lIEZsb3cgImZsb3c0IiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiBUaGVyZSBpcyBu
byBOYW1lZCBGbG93ICJmbG93NCIgaW4gdGhlIG1haW4gZG9jdW1lbnQKIAorUnVubmluZzogdGVz
dE5hbWVkRmxvd0NyZWF0ZWQKK05hbWVkRmxvd0NyZWF0ZWQ6ICJ0bXBOYW1lZEZsb3ciCisKK1J1
bm5pbmc6IHRlc3ROYW1lZEZsb3dSZW1vdmVkCitOYW1lZEZsb3dSZW1vdmVkOiAidG1wTmFtZWRG
bG93IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKaW5kZXggOTM5NjZhNC4uZTkyNTcx
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbApAQCAtMTgsNiArMTgsMjIgQEAgZnVu
Y3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKICAgICBydW5UZXN0KCk7CiB9CiAKK2Z1bmN0
aW9uIGNyZWF0ZU5hbWVkRmxvdygpCit7CisgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJhcnRpY2xlIik7CisgICAgYXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKKyAg
ICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gInRtcE5hbWVkRmxvdyI7CisKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFydGljbGUpOworfQorCitmdW5jdGlvbiByZW1vdmVO
YW1lZEZsb3coKQoreworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRtcEFydGljbGUiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXJ0aWNsZSk7
Cit9CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVs
ZW1lbnRzIik7CkBAIC05OSw2ICsxMTUsNDUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3ROYW1lZEZsb3dDcmVhdGVkKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVOYW1lZEZsb3coKSIpOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgY2FsbGJh
Y2ssIHRoaXMpOworCisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRt
cE5hbWVkRmxvdyIpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgi
WyFdIEZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0
ZWQ6IFwidG1wTmFtZWRGbG93XCIiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5hbWVkRmxvd1JlbW92
ZWQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxv
d1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoInJlbW92ZU5hbWVkRmxvdygpIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7CisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd1JlbW92ZWQ6IFwidG1wTmFtZWRGbG93XCIiKTsK
KyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICBd
KTsKIH0KIDwvc2NyaXB0PgpAQCAtMTA2LDEwICsxNjEsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAK
IDxib2R5IG9ubG9hZD0iY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkiPgogPHA+Ci1UZXN0cyB0aGUg
Zm9sbG93aW5nIGNvbW1hbmRzOgorVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhbmQgZXZl
bnRzOgogPHVsPgogICAgIDxsaT5nZXROYW1lZEZsb3dDb2xsZWN0aW9uIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwNyI+QnVnIDkxNjA3PC9hPjwv
bGk+CiAgICAgPGxpPmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KKyAgICA8bGk+bmFt
ZWRGbG93Q3JlYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTI3MzkiPkJ1ZyA5MjczOTwvYT48L2xpPgorICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVk
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+
QnVnIDkyNzM5PC9hPjwvbGk+CiA8L3VsPgogPC9wPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZiOGEzMi4u
OWQwZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTAzICBBbmRyZWkg
UG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBy
b3RvY29sOiBBZGQgIm5hbWVkRmxvd0NyZWF0ZWQiIGFuZCAibmFtZWRGbG93UmVtb3ZlZCIgZXZl
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjcz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudGVkICJuYW1lZEZsb3dDcmVhdGVkIiBhbmQgIm5hbWVkRmxvd1JlbW92ZWQiIGV2ZW50cy4K
KworICAgICAgICBNb2RpZmllZCB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwuCisKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
OjplbnN1cmVGbG93V2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93
Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlTmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0NyZWF0ZWQuY2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dD
cmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93UmVtb3ZlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlLnN0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dS
ZW1vdmVkKToKKwogMjAxMi0wOC0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1Y4XSBNYWtlIHY4Tm9uU3RyaW5nVmFsdWVUb1dlYkNvcmVTdHJpbmcg
YSBzdGF0aWMgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
Q29sbGVjdGlvbi5jcHAKaW5kZXggYzUwZTA1Ny4uNjU1ZGI1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CkBAIC03OSw2ICs4MCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBXZWJLaXROYW1l
ZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QKICAgICBSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUodGhpcywgZmxv
d05hbWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuZXdG
bG93LT5uYW1lKCkpOworCiAgICAgcmV0dXJuIG5ld0Zsb3cucmVsZWFzZSgpOwogfQogCkBAIC05
Miw2ICs5NSw4IEBAIHZvaWQgV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVk
RmxvdyhXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKICAgICBBU1NFUlQobV9uYW1lZEZsb3dz
LmNvbnRhaW5zKG5hbWVkRmxvdykpOwogCiAgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZs
b3cpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3co
bV9kb2N1bWVudCwgbmFtZWRGbG93LT5uYW1lKCkpOwogfQogCiB2b2lkIFdlYktpdE5hbWVkRmxv
d0NvbGxlY3Rpb246OmRvY3VtZW50RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgppbmRleCBlNmE0MWZmLi40ZjBhYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMzczLDYgKzIzNzMsMjQgQEAKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdHlsZVNoZWV0SWQiLCAiJHJlZiI6ICJTdHlsZVNoZWV0SWQi
IH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJG
aXJlZCB3aGVuZXZlciBhIHN0eWxlc2hlZXQgaXMgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUg
Y2xpZW50IG9wZXJhdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIk
cmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxv
dy4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyBjcmVhdGVkLiIsCisgICAgICAgICAgICAgICAg
ImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVtb3ZlZCIsCisgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxv
dy4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBj
b250ZW50IG5vZGVzIGFuZCByZWdpb25zLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRy
dWUKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0ZGIyN2I2Li45MjBmNzJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTUzNSw2ICs1MzUsMTYgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6bWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKQogICAgICAgICBtX2Zyb250ZW5kLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgp
OwogfQogCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgbV9mcm9udGVu
ZC0+bmFtZWRGbG93Q3JlYXRlZChtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGRv
Y3VtZW50KSwgbmFtZS5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKK3sKKyAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKG1fZG9tQWdlbnQtPnB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoZG9jdW1lbnQpLCBuYW1lLnN0cmluZygpKTsKK30KKwogYm9v
bCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBD
U1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKQogewogICAgIGlmIChtX25vZGVJZFRv
Rm9yY2VkUHNldWRvU3RhdGUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3NmQ4Nzc5Li5mMjRhNDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTcsNiArOTcsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lk
IHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOworICAgIHZvaWQg
ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsK
KyAgICB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3Jj
ZWRQc2V1ZG9DbGFzc2VzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJ
bmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhYzQ3OGNjLi43NjhiNjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTY2LDYgKzE2Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRv
d1Jvb3QqKTsKICAgICB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRv
d1Jvb3QqKTsKIAorICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKICAgICBO
b2RlKiBub2RlRm9ySWQoaW50IG5vZGVJZCk7CiAgICAgaW50IGJvdW5kTm9kZUlkKE5vZGUqKTsK
ICAgICB2b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVyKik7CkBAIC0yMTAsNyArMjExLDYg
QEAgcHJpdmF0ZToKICAgICBOb2RlKiBhc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkKTsKIAotICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUq
KTsKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKTsKIAogICAg
IGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmOTQ3
Yjc2Li5lNzAzZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjMyLDYgKzIzMiwxOCBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydQogICAgICAgICBkb21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoaG9zdCwg
cm9vdCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1l
ZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JD
U1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50
LCBuYW1lKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKElu
c3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVOYW1lZEZsb3coZG9jdW1l
bnQsIG5hbWUpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykK
IHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBlY2NiNTAwLi4xYzFkNDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0xMTMsNiArMTEzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdp
bGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChQYWdlKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxh
Z3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjkwLDYg
KzI5Miw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hh
ZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jv
b3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRG
bG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9k
aWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyopOwpAQCAtNTU3LDYgKzU2MSwyNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRv
d1JvbwogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3Vt
ZW50LCBuYW1lKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3Vt
ZW50KSkKKyAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
LCBkb2N1bWVudCwgbmFtZSk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCA1YWU1MjE1Li4wZmM0ZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01
Niw3ICs1Niw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5
bG9hZCA9IGZ1bmN0aW9uKHJ1bGVBcnJheSkKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
RXZlbnRzID0gewogICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAot
ICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiCisg
ICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCisg
ICAgTmFtZWRGbG93Q3JlYXRlZDogIk5hbWVkRmxvd0NyZWF0ZWQiLAorICAgIE5hbWVkRmxvd1Jl
bW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIgogfQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUgPSB7CkBAIC0zNDAsNiArMzQyLDU0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtE
T01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKi8KKyAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2Rl
SWQsIG5hbWUpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8qKgorICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkRPTURvY3VtZW50fSByb290CisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKHJvb3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50
IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50
CisgICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBk
b2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7CisgICAgICAgIH0K
KworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNr
LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50
Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAg
ICAqLworICAgIF9uYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFt
ZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLyoqCisgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9N
RG9jdW1lbnR9IHJvb3QKKyAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socm9v
dCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQgd2Ugb25s
eSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQKKyAgICAg
ICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50
Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0
aGlzKSk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5bGVT
aGVldElkfSBzdHlsZVNoZWV0SWQKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VGV4dAogICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWFqb3JDaGFuZ2UKQEAgLTEyNjUsNiArMTMxNSwyNCBAQCBX
ZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgc3R5bGVTaGVldENo
YW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Nzc01v
ZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8KKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBm
dW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01v
ZGVsLl9uYW1lZEZsb3dDcmVhdGVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8KKyAgICBuYW1lZEZsb3dSZW1vdmVk
OiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nz
c01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKICAgICB9CiB9
CiAK
</data>
<flag name="review"
          id="166000"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156695</attachid>
            <date>2012-08-06 07:58:50 -0700</date>
            <delta_ts>2012-08-06 09:40:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92739</filename>
            <type>text/plain</type>
            <size>19245</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNDI5MmJlLi5hMTM5YjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dS
ZW1vdmVkIiBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdGVzdCBzbyB0aGF0IGl0IHZhbGlkYXRlcyB0aGUgaW1wbGVtZW50ZWQg
ZXZlbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sOgorCiAyMDEyLTA4LTA2ICBUYWthc2hpIFRv
eW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZWJhc2VsaW5lIGZvciBNYWMxMC42IGFnYWluc3QgcjEyNDc1MgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdp
b25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dAppbmRleCA0YjBjM2U3Li4xMzkyMmU3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNv
bW1hbmRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3By
b3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDkgQEAK
LVRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CitUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1h
bmRzIGFuZCBldmVudHM6CiAKIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24gQnVnIDkxNjA3CiBnZXRG
bG93QnlOYW1lIEJ1ZyA5MTg1NQorbmFtZWRGbG93Q3JlYXRlZCBCdWcgOTI3MzkKK25hbWVkRmxv
d1JlbW92ZWQgQnVnIDkyNzM5CiAKIAogUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rp
b24KQEAgLTE5LDMgKzIxLDkgQEAgUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUyCiA9PT0gTmFt
ZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUgaXMgbm8gTmFtZWQg
RmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKK1J1bm5pbmc6IHRlc3ROYW1lZEZs
b3dDcmVhdGVkCitOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93IgorCitSdW5uaW5nOiB0
ZXN0TmFtZWRGbG93UmVtb3ZlZAorTmFtZWRGbG93UmVtb3ZlZDogInRtcE5hbWVkRmxvdyIKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVn
aW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2Nv
bC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IDkzOTY2YTQuLmU5MjU3MTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMt
Y29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTE4LDYgKzE4LDIyIEBAIGZ1bmN0aW9uIGNy
ZWF0ZUR5bmFtaWNFbGVtZW50cygpCiAgICAgcnVuVGVzdCgpOwogfQogCitmdW5jdGlvbiBjcmVh
dGVOYW1lZEZsb3coKQoreworICAgIHZhciBhcnRpY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYXJ0aWNsZSIpOworICAgIGFydGljbGUuaWQgPSAidG1wQXJ0aWNsZSI7CisgICAgYXJ0aWNs
ZS5zdHlsZS53ZWJraXRGbG93SW50byA9ICJ0bXBOYW1lZEZsb3ciOworCisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChhcnRpY2xlKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93
KCkKK3sKKyAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRp
Y2xlIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFydGljbGUpOworfQorCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIp
OwpAQCAtOTksNiArMTE1LDQ1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
TmFtZWRGbG93Q3JlYXRlZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgY2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlTmFtZWRGbG93KCkiKTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlz
KTsKKworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZs
b3ciKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWls
ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVkOiBcInRt
cE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3ROYW1lZEZsb3dSZW1vdmVkKG5leHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVk
LCBjYWxsYmFjaywgdGhpcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKCJyZW1vdmVOYW1lZEZsb3coKSIpOworCisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVu
dHMuTmFtZWRGbG93UmVtb3ZlZCwgY2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgXSk7CiB9CiA8
L3NjcmlwdD4KQEAgLTEwNiwxMCArMTYxLDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiA8Ym9keSBv
bmxvYWQ9ImNyZWF0ZUR5bmFtaWNFbGVtZW50cygpIj4KIDxwPgotVGVzdHMgdGhlIGZvbGxvd2lu
ZyBjb21tYW5kczoKK1Rlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIDx1
bD4KICAgICA8bGk+Z2V0TmFtZWRGbG93Q29sbGVjdGlvbiA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2MDciPkJ1ZyA5MTYwNzwvYT48L2xpPgogICAg
IDxsaT5nZXRGbG93QnlOYW1lIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MTg1NSI+QnVnIDkxODU1PC9hPjwvbGk+CisgICAgPGxpPm5hbWVkRmxvd0Ny
ZWF0ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
NzM5Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8bGk+bmFtZWRGbG93UmVtb3ZlZCA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3MzkiPkJ1ZyA5Mjcz
OTwvYT48L2xpPgogPC91bD4KIDwvcD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGViNGY2MjAuLjcwZGUxNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0wOC0wNiAgQW5kcmVpIFBvZW5hcnUg
IDxwb2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbDog
QWRkICJuYW1lZEZsb3dDcmVhdGVkIiBhbmQgIm5hbWVkRmxvd1JlbW92ZWQiIGV2ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCAi
bmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1lZEZsb3dSZW1vdmVkIiBldmVudHMuCisKKyAgICAg
ICAgTW9kaWZpZWQgdGVzdDogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1j
b21tYW5kcy5odG1sLgorCisgICAgICAgICogZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJl
Rmxvd1dpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rp
b246OmRpc2NhcmROYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNv
bjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93
SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93Q3JlYXRlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dSZW1vdmVkLmNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fbmFtZWRGbG93
UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUu
c3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIu
cHJvdG90eXBlLm5hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rp
c3BhdGNoZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92ZWQpOgorCiAyMDEyLTA4LTA2ICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYSB0aW55IHJlZmFjdG9yaW5nIG9mIEhpZ2hsaWdodGVyIGluIEluc3BlY3RvckRPTUFn
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5j
cHAKaW5kZXggYzUwZTA1Ny4uNjU1ZGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFt
ZWRGbG93LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC03OSw2ICs4
MCw4IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBXZWJLaXROYW1lZEZsb3dDb2xsZWN0
aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93
PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUodGhpcywgZmxvd05hbWUpOwogICAg
IG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LT5uYW1lKCkp
OworCiAgICAgcmV0dXJuIG5ld0Zsb3cucmVsZWFzZSgpOwogfQogCkBAIC05Miw2ICs5NSw4IEBA
IHZvaWQgV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5h
bWVkRmxvdykpOwogCiAgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwg
bmFtZWRGbG93LT5uYW1lKCkpOwogfQogCiB2b2lkIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246
OmRvY3VtZW50RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgppbmRleCBkYTU3Y2E5Li4wMWE1OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC0yMzczLDYgKzIzNzMsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdHlsZVNoZWV0SWQiLCAiJHJlZiI6ICJTdHlsZVNoZWV0SWQiIH0KICAgICAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuZXZl
ciBhIHN0eWxlc2hlZXQgaXMgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgY2xpZW50IG9wZXJh
dGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5O
b2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVu
IGEgTmFtZWQgRmxvdyBpcyBjcmVhdGVkLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRy
dWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAibmFtZWRGbG93UmVtb3ZlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVu
IGEgTmFtZWQgRmxvdyBpcyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBjb250ZW50IG5vZGVz
IGFuZCByZWdpb25zLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAg
ICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBmNjM5OGMyLi5mZjZhYTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTUxNiw2ICs1MTYs
NyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAgICAgbV9jc3NTdHlsZVNoZWV0
VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVh
cigpOworICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIoKTsKICAgICBy
ZXNldFBzZXVkb1N0YXRlcygpOwogfQogCkBAIC01MzUsNiArNTM2LDI0IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVu
ZC0+bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQoreworICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChk
b2N1bWVudCk7CisgICAgaWYgKCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcm9udGVu
ZC0+bmFtZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworfQorCit2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQt
PmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1lZEZsb3dD
b2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7
Cit9CisKIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCog
ZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSkKIHsKICAgICBpZiAo
bV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmlzRW1wdHkoKSkKQEAgLTgxMSw2ICs4MzAsOCBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZAogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKG5vZGVJZCk7
CisKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVk
Rmxvd3MoKS0+bmFtZWRGbG93c05hbWVzKCk7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVh
dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApp
bmRleCA3NmQ4Nzc5Li5hOTcxMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5Q29u
dGV4dC5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC05Nyw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOwogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1
bHRDaGFuZ2VkKCk7CisgICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3Vt
ZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRD
b21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7
CiAgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHls
ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7CkBAIC0x
NjksNiArMTcyLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0IG1f
bm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5
bGVTaGVldCBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIE5vZGVJZFRvRm9y
Y2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOworICAgIEhhc2hTZXQ8
aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkOwogCiAgICAgaW50IG1fbGFzdFN0
eWxlU2hlZXRJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmOTQ3Yjc2Li5lNzAzZGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtMjMyLDYgKzIzMiwxOCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydQogICAgICAgICBk
b21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NB
Z2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNz
c0FnZW50LT5kaWRSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworfQorCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCBlY2NiNTAwLi4xYzFkNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMTMsNiArMTEzLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3Vt
ZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwg
U2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQq
IGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3co
RG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAK
ICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiwgY29uc3QgSGl0
VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhh
bmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjkwLDYgKzI5Miw4IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3
aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3Qs
IFNoYWRvd1Jvb3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGlj
IHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBj
b25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGlj
IGJvb2wgaGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNTU3
LDYgKzU2MSwyNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQ
b3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1JvbwogI2VuZGlmCiB9CiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBkaWRDcmVhdGVOYW1lZEZs
b3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lKTsKKyNlbmRpZgorfQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxv
dyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkUmVtb3Zl
TmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisjZW5k
aWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVu
c2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRl
eCA1YWU1MjE1Li4wZmM0ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01Niw3ICs1Niw5IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0aW9uKHJ1bGVBcnJh
eSkKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewogICAgIFN0eWxlU2hl
ZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAotICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFu
Z2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiCisgICAgTWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCisgICAgTmFtZWRGbG93Q3JlYXRlZDogIk5h
bWVkRmxvd0NyZWF0ZWQiLAorICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVk
IgogfQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CkBAIC0zNDAs
NiArMzQyLDU0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50
Tm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8KKyAgICBfbmFtZWRG
bG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
RXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8qKgorICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290Cisg
ICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZv
ciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50CisgICAgICAgICAgICBpZiAoZG9jdW1l
bnROb2RlSWQgIT09IHJvb3QuaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnRO
b2RlSWQsIG5hbWU6IG5hbWUgfSk7CisgICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLworICAgIF9uYW1lZEZsb3dSZW1v
dmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMu
TmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLyoqCisg
ICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9IHJvb3QKKyAgICAgICAg
Ki8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socm9vdCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQgd2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVk
Rmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQKKyAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJ
ZCAhPT0gcm9vdC5pZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2
ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwg
bmFtZTogbmFtZSB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2Vu
dC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIC8q
KgogICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5bGVTaGVldElkfSBzdHlsZVNoZWV0SWQKICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VGV4dAogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWFq
b3JDaGFuZ2UKQEAgLTEyNjUsNiArMTMxNSwyNCBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hl
ci5wcm90b3R5cGUgPSB7CiAgICAgc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hl
ZXRJZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9maXJlU3R5bGVTaGVldENoYW5n
ZWQoc3R5bGVTaGVldElkKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01B
Z2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKi8KKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwg
bmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVhdGVkKGRv
Y3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtE
T01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKi8KKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJ
ZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVk
KGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>