<?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>140465</bug_id>
          
          <creation_ts>2015-01-14 14:37:07 -0800</creation_ts>
          <short_desc>When building the NFA of the global disjunction, share the prefix subgraph of existing subpatterns</short_desc>
          <delta_ts>2015-01-15 14:19:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061305</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-14 14:37:07 -0800</bug_when>
    <thetext>When building the NFA of the global disjunction, share the prefix subgraph of existing subpatterns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061314</commentid>
    <comment_count>1</comment_count>
      <attachid>244642</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-14 14:48:02 -0800</bug_when>
    <thetext>Created attachment 244642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061604</commentid>
    <comment_count>2</comment_count>
      <attachid>244642</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-15 11:53:02 -0800</bug_when>
    <thetext>Comment on attachment 244642
Patch

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

r=me

&gt; Source/WebCore/contentextensions/DFANode.h:47
&gt; -    Vector&lt;unsigned&gt; correspondingDFANodes;
&gt; +    Vector&lt;unsigned&gt; correspondingNFANodes;

Oops :)

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:42
&gt; +static TrivialAtom trivialAtomFromAsciiCharacter(char character)

I think we typically capitalize &quot;ASCII&quot; even in this kind of context.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:55
&gt; +static void quantifyTrivialAtom(TrivialAtom&amp; trivialTom, TrivialAtomQuantifier quantifier)

trivialTom -&gt; trivialAtom

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:317
&gt; +            auto addResult = m_LastPrefixTreeEntry-&gt;nextPattern.set(m_pendingTrivialAtom, WTF::move(nextPrefixTreeEntry));

I guess you wanted add() here, not set()?

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:337
&gt; +    PrefixTreeEntry* m_LastPrefixTreeEntry;

Camel casing error, should be m_lastPrefixTreeEntry.

&gt; Source/WebCore/contentextensions/URLFilterParser.h:50
&gt; +    URLFilterParser(NFA&amp;);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061637</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-15 14:19:35 -0800</bug_when>
    <thetext>Committed r178529: &lt;http://trac.webkit.org/changeset/178529&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244642</attachid>
            <date>2015-01-14 14:48:02 -0800</date>
            <delta_ts>2015-01-15 11:53:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140465-20150114144808.patch</filename>
            <type>text/plain</type>
            <size>31028</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIwOTAzNTE2MTVjZDI4
NzE0OTJmZDM1OTdiOGNkNTAxODNkMTIyYS4uYWQ4ZWUyZGVhZmFhNWVkMjg0YmVhMmM4MTk2YTZk
NWEwYmZjMjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE1LTAxLTE0ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXaGVuIGJ1aWxk
aW5nIHRoZSBORkEgb2YgdGhlIGdsb2JhbCBkaXNqdW5jdGlvbiwgc2hhcmUgdGhlIHByZWZpeCBz
dWJncmFwaCBvZiBleGlzdGluZyBzdWJwYXR0ZXJucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwNDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBwYXJzZXIgdG8g
cHJvZHVjZSBzbWFsbGVyIGdyYXBocyB3aGVuIG11bHRpcGxlIHBhdHRlcm5zCisgICAgICAgIG9m
IHRoZSBydWxlIGxpc3Qgc2hhcmUgYSBjb21tb24gcHJlZml4LgorCisgICAgICAgIFByZXZpb3Vz
bHksIEdyYXBoQnVpbGRlciB3b3VsZCBnZW5lcmF0ZSBzdWJncmFwaCBpbiBwbGFjZSBvZiBlYWNo
IHBhcnNlZAorICAgICAgICBhdG9tLiBXZSBub3cgb25seSBjcmVhdGUgc3ViZ3JhcGggaWYgYW4g
YXRvbSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHByZWZpeCB0cmVlLgorCisgICAgICAgIFdlIGFj
Y3VtdWxhdGUgdGhlIHBhcnNpbmcgaW5mb3JtYXRpb24gaW50byBzbWFsbCB1aW50MTZfdCBuYW1l
ZCBUcml2aWFsQXRvbS4KKyAgICAgICAgV2hlbiBnZW5lcmF0aW5nIHRoZSBzdWJncmFwaCBmb3Ig
YW4gbmV3IGF0b20sIHdlIGZpcnN0IGNoZWNrIGlmIHRoZSBwcmVmaXggdHJlZSBhbHJlYWR5Cisg
ICAgICAgIGhhcyBhIGNvcnJlc3BvbmRpbmcgc3ViZ3JhcGggZm9yIHRoYXQgYXRvbS4gSWYgaXQg
ZG9lcywgd2UgZG8gbm90IGdlbmVyYXRlIGFueXRoaW5nIGFuZCB3ZSBleHRlbmQgdGhlIGV4aXN0
aW5nCisgICAgICAgIGdyYXBoLiBJZiB0aGVyZSBpcyBubyBleGlzdGluZyBwcmVmaXgsIHdlIGNy
ZWF0ZSB0aGUgc3ViZ3JhcGggYW5kIGV4dGVuZCB0aGUgcHJlZml4IHRyZWUuCisKKyAgICAgICAg
U2hhcmluZyBwcmVmaXggc3VidHJlZXMgc2xvd3MgZG93biB0aGUgc3VidHJlZSBnZW5lcmF0aW9u
IGEgYml0IGJ1dCB0aGUgcmVzdWx0aW5nIGdyYXBoIGlzIG11Y2gKKyAgICAgICAgc2ltcGxlciBm
b3IgbWFueSBraW5kIG9mIGlucHV0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZDo6c2V0UnVsZUxpc3QpOgorICAgICAgICBUaGUgVVJMRmls
dGVyUGFyc2VyIG5vdyBtYWludGFpbnMgc3RhdGVzICh0aGUgcHJlZml4IHRyZWUpIGJldHdlZW4g
cGF0dGVybnMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6ZGVidWdQcmludERvdCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oOgorICAgICAgICBGaXggYSB0eXBvIDop
CisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6Y3JlYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjpzZXRGaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6TkZBOjpyZXN0b3JlVG9HcmFwaFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6YWRkUnVsZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6OmRlYnVnUHJpbnREb3QpOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL05GQS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6Ok5GQTo6YWRkUnVsZUlkKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2Rl
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmg6Cisg
ICAgICAgIE5GQSBub2RlcyBmcm9tIHR3byBwYXR0ZXJucyBhcmUgbm93ICJtZXJnZWQiIGJ5IGNv
bnN0cnVjdGlvbiwgdGh1cyB3ZSBuZWVkCisgICAgICAgIHRvIGtlZXAgdHJhY2sgb2YgbXVsdGlw
bGUgcnVsZXMgcGVyIG5vZGUuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RG
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Tm9kZUlkU2V0VG9V
bmlxdWVOb2RlSWRTZXRUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6dHJpdmlhbEF0b21Gcm9tQXNjaWlDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnF1YW50aWZ5VHJpdmlhbEF0b20pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnRyaXZpYWxBdG9tRm9yTmV3bGluZUNsYXNzSURC
dWlsdGluKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxk
ZXI6OkdyYXBoQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
R3JhcGhCdWlsZGVyOjptX0xhc3RQcmVmaXhUcmVlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZmluYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbVBhdHRlcm5DaGFyYWN0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6
YXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpxdWFudGlmeUF0b20pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpnZW5lcmF0ZVRyYW5zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6c2lua1Ry
aXZpYWxBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1
aWxkZXI6OnNpbmtQZW5kaW5nQXRvbUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OlVSTEZpbHRlclBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6
Om1fbGFzdEF0b20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OlVSTEZpbHRlclBhcnNlcjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6aGFzRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6ZXJyb3JNZXNzYWdl
KTogRGVsZXRlZC4KKwogMjAxNS0wMS0xNCAgQmFydGxvbWllaiBHYWpkYSAgPGIuZ2FqZGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW01TRV0gSW1wbGVtZW50IHBlciBUcmFja0J1ZmZlciBidWZm
ZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzZDE0MDRlZmZlODk4NDY0YzA1YjJlZWZjYmZjMzc3YWMzZjE5NmE3Li4wZjFh
MWZiMWVhNTAxMzA0NGE3OGE0ZmNjNzg4MTdmNWY3ZDZjYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDMxLDcgKzEwMzEs
NiBAQAogCQkyNjc3MjYwNDFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNjAyMUE1
REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwICovOyB9OwogCQkyNjc3MjYwNTFB
NURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjYwMzFBNURGNkYyMDAzQzI0REQgLyogVVJM
RmlsdGVyUGFyc2VyLmggKi87IH07CiAJCTI2OTIzOTk2MTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjY5MjM5OTIxNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmggKi87IH07Ci0JCTI2OTM5NzIxMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzFG
MUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmNwcCAqLzsgfTsKIAkJMjY5Mzk3MjIxQTRBNDEy
RjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2OTM5NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi87IH07
CiAJCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzIzMUE0QTVCNjQwMEU4MzQ5RCAvKiBO
RkEuaCAqLzsgfTsKIAkJMjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcyNTFBNEE1RkJE
MDBFODM0OUQgLyogTkZBLmNwcCAqLzsgfTsKQEAgLTgwMjksNyArODAyOCw2IEBACiAJCTI2Nzcy
NjAzMUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVVJMRmlsdGVyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI2OTIzOTkxMTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2OTIzOTky
MTUwNUUxQUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyNjkzOTcxRjFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBORkFOb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8q
IE5GQU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTkZBTm9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyog
TkZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNjkzOTcyNTFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTMzMSw3ICsxNTMyOSw2IEBACiAJCQkJMjY3NzI1RjkxQTVC
M0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCAqLywKIAkJCQkyNjkzOTcyNTFBNEE1RkJEMDBFODM0
OUQgLyogTkZBLmNwcCAqLywKIAkJCQkyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmgg
Ki8sCi0JCQkJMjY5Mzk3MUYxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwICovLAogCQkJ
CTI2OTM5NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCiAJCQkJMjY3NzI1RkEx
QTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKIAkJCQkyNjc3MjVGQjFBNUIzQUQ5
MDAzQzI0REQgLyogTkZBVG9ERkEuaCAqLywKQEAgLTI5Njc1LDcgKzI5NjcyLDYgQEAKIAkJCQlC
MjIyN0E5NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNTQzQjg1NzE3RUI3NThGMDAzQkU5M0EgLyogU1ZHUHJvcGVydHlJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjY5Mzk3MjEx
QTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdB
OUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMjI3NDc4MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzIyNzQ3QTBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVE
ZWZzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggM2E3
MTkwZWU2ZWU3NzM5MTQ4NmQwZWI0ZmUzYWM1OTgzYTRkNWU2NC4uZTAzMjk2NDZmNDEyZjgyMjhi
NjYyOWI5OTAxMjQ4NmYzOTZiMThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC02
NCwxNiArNjQsMTYgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVmVjdG8KICNlbmRpZgogCiAgICAgTkZB
IG5mYTsKKyAgICBVUkxGaWx0ZXJQYXJzZXIgdXJsRmlsdGVyUGFyc2VyKG5mYSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBydWxlTGlzdC5zaXplKCk7ICsr
cnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50
RXh0ZW5zaW9uUnVsZSA9IHJ1bGVMaXN0W3J1bGVJbmRleF07CiAgICAgICAgIGNvbnN0IENvbnRl
bnRFeHRlbnNpb25SdWxlOjpUcmlnZ2VyJiB0cmlnZ2VyID0gY29udGVudEV4dGVuc2lvblJ1bGUu
dHJpZ2dlcigpOwogICAgICAgICBBU1NFUlQodHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCkpOwog
Ci0gICAgICAgIFVSTEZpbHRlclBhcnNlciB1cmxGaWx0ZXJQYXJzZXI7Ci0gICAgICAgIHVybEZp
bHRlclBhcnNlci5wYXJzZSh0cmlnZ2VyLnVybEZpbHRlciwgcnVsZUluZGV4LCBuZmEpOworICAg
ICAgICBTdHJpbmcgZXJyb3IgPSB1cmxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybih0cmlnZ2VyLnVy
bEZpbHRlciwgcnVsZUluZGV4KTsKIAotICAgICAgICBpZiAodXJsRmlsdGVyUGFyc2VyLmhhc0Vy
cm9yKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAl
cyIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5kYXRhKCksIHVybEZpbHRlclBhcnNlci5lcnJv
ck1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
eworICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdoaWxlIHBhcnNpbmcgJXM6ICVzXG4iLCB0
cmlnZ2VyLnVybEZpbHRlci51dGY4KCkuZGF0YSgpLCBlcnJvci51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQS5jcHAKaW5kZXggNzBmYjk4YTA0ZmJmYWUyNzU0MzliYmZmNTMyZmMy
NDRlYmU2YTE0MC4uYmJkNThiMDRmZDgwM2E0MmQ0ZDBkMWI3MjhhNjRiYjZlM2ZlNjcxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCkBAIC0xNTQsMTMgKzE1NCwx
MyBAQCB2b2lkIERGQTo6ZGVidWdQcmludERvdCgpIGNvbnN0CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRpbmdERkFOb2RlcyA9
IG1fbm9kZXNbaV0uY29ycmVzcG9uZGluZ0RGQU5vZGVzOwotICAgICAgICBBU1NFUlQoIWNvcnJl
c3BvbmRpbmdERkFOb2Rlcy5pc0VtcHR5KCkpOworICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IGNv
cnJlc3BvbmRpbmdORkFOb2RlcyA9IG1fbm9kZXNbaV0uY29ycmVzcG9uZGluZ05GQU5vZGVzOwor
ICAgICAgICBBU1NFUlQoIWNvcnJlc3BvbmRpbmdORkFOb2Rlcy5pc0VtcHR5KCkpOwogICAgICAg
ICBkYXRhTG9nRigiPEJSLz5ORkEgTm9kZXM6ICIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGNv
cnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPSAwOyBjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4IDwg
Y29ycmVzcG9uZGluZ0RGQU5vZGVzLnNpemUoKTsgKytjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4
KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgY29ycmVzcG9uZGluZ0RGQU5vZGVJbmRleCA9IDA7
IGNvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXggPCBjb3JyZXNwb25kaW5nTkZBTm9kZXMuc2l6ZSgp
OyArK2NvcnJlc3BvbmRpbmdERkFOb2RlSW5kZXgpIHsKICAgICAgICAgICAgIGlmIChjb3JyZXNw
b25kaW5nREZBTm9kZUluZGV4KQogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIsICIpOwotICAg
ICAgICAgICAgZGF0YUxvZ0YoIiVkIiwgY29ycmVzcG9uZGluZ0RGQU5vZGVzW2NvcnJlc3BvbmRp
bmdERkFOb2RlSW5kZXhdKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCIlZCIsIGNvcnJlc3BvbmRp
bmdORkFOb2Rlc1tjb3JyZXNwb25kaW5nREZBTm9kZUluZGV4XSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBkYXRhTG9nRigiPl0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QU5vZGUuaAppbmRleCA0NmI1MTgzNTUzYzE5ODI2MGExNjZmYmNjYTFkZTY1ODM1OGFlNTRhLi5i
Y2UyM2Q2NmY0ZjFhYzE3NmQwMGFmNGI2NWRlOWJhODI1NzkxNzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBWZWN0b3I8dWludDY0X3Q+IGFjdGlvbnM7CiAKICNpZiBDT05URU5UX0VYVEVOU0lPTlNf
U1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRp
bmdERkFOb2RlczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IGNvcnJlc3BvbmRpbmdORkFOb2RlczsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKaW5k
ZXggM2VkNjE5YWVlY2JjMmI1MDdiZDlmODBmY2IwMzMxOGM2ODM0Y2E0Yy4uMWFiOTkwYTBkNDlh
MzkzMTUzOWFkYzU5MmJkMmFkODg1OTFiOGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkEuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgTkZBOjpORkEoKQogewogfQogCi11
bnNpZ25lZCBORkE6OmNyZWF0ZU5vZGUodWludDY0X3QgcnVsZUlkKQordW5zaWduZWQgTkZBOjpj
cmVhdGVOb2RlKCkKIHsKICAgICB1bnNpZ25lZCBuZXh0SWQgPSBtX25vZGVzLnNpemUoKTsKLSAg
ICBtX25vZGVzLmFwcGVuZChORkFOb2RlKHJ1bGVJZCkpOworICAgIG1fbm9kZXMuYXBwZW5kKE5G
QU5vZGUoKSk7CiAgICAgcmV0dXJuIG5leHRJZDsKIH0KIApAQCAtNjYsMTAgKzY2LDEwIEBAIHZv
aWQgTkZBOjphZGRFcHNpbG9uVHJhbnNpdGlvbih1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykK
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFkZCh0byk7CiB9CiAKLXZvaWQgTkZBOjpz
ZXRGaW5hbCh1bnNpZ25lZCBub2RlKQordm9pZCBORkE6OnNldEZpbmFsKHVuc2lnbmVkIG5vZGUs
IHVpbnQ2NF90IHJ1bGVJZCkKIHsKLSAgICBBU1NFUlQobm9kZSA8IG1fbm9kZXMuc2l6ZSgpKTsK
LSAgICBtX25vZGVzW25vZGVdLmlzRmluYWwgPSB0cnVlOworICAgIEFTU0VSVCghbV9ub2Rlc1tu
b2RlXS5maW5hbFJ1bGVJZHMuY29udGFpbnMocnVsZUlkKSk7CisgICAgbV9ub2Rlc1tub2RlXS5m
aW5hbFJ1bGVJZHMuYXBwZW5kKHJ1bGVJZCk7CiB9CiAKIHVuc2lnbmVkIE5GQTo6Z3JhcGhTaXpl
KCkgY29uc3QKQEAgLTc5LDcgKzc5LDcgQEAgdW5zaWduZWQgTkZBOjpncmFwaFNpemUoKSBjb25z
dAogCiB2b2lkIE5GQTo6cmVzdG9yZVRvR3JhcGhTaXplKHVuc2lnbmVkIHNpemUpCiB7Ci0gICAg
QVNTRVJUKHNpemUgPiAxKTsKKyAgICBBU1NFUlQoc2l6ZSA+PSAxKTsKICAgICBBU1NFUlQoc2l6
ZSA8PSBncmFwaFNpemUoKSk7CiAKICAgICBtX25vZGVzLnNocmluayhzaXplKTsKQEAgLTg3LDYg
Kzg3LDEyIEBAIHZvaWQgTkZBOjpyZXN0b3JlVG9HcmFwaFNpemUodW5zaWduZWQgc2l6ZSkKIAog
I2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwogCit2b2lkIE5G
QTo6YWRkUnVsZUlkKHVuc2lnbmVkIG5vZGUsIHVpbnQ2NF90IHJ1bGVJZCkKK3sKKyAgICBBU1NF
UlQoIW1fbm9kZXNbbm9kZV0ucnVsZUlkcy5jb250YWlucyhydWxlSWQpKTsKKyAgICBtX25vZGVz
W25vZGVdLnJ1bGVJZHMuYXBwZW5kKHJ1bGVJZCk7Cit9CisKIHN0YXRpYyB2b2lkIHByaW50UmFu
Z2UoYm9vbCBmaXJzdFJhbmdlLCB1aW50MTZfdCByYW5nZVN0YXJ0LCB1aW50MTZfdCByYW5nZUVu
ZCwgdWludDE2X3QgZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpCiB7CiAgICAgaWYgKCFmaXJz
dFJhbmdlKQpAQCAtMTUyLDEyICsxNTgsMzMgQEAgdm9pZCBORkE6OmRlYnVnUHJpbnREb3QoKSBj
b25zdAogICAgIGRhdGFMb2dGKCIgICAgbm9kZSBbc2hhcGU9Y2lyY2xlXTtcbiIpOwogICAgIGRh
dGFMb2dGKCIgICAge1xuIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fbm9kZXNbaV0ucnVsZUlkICA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAg
ICAgICAgJWQgW2xhYmVsPVwiTm9kZSAlZFwiXSIsIGksIGkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBkYXRhTG9nRigiICAgICAgICAgJWQgW2xhYmVsPTxOb2RlICVkPEJSLz4oUnVsZSAl
bGx1KT5dIiwgaSwgaSwgbV9ub2Rlc1tpXS5ydWxlSWQpOworICAgICAgICBkYXRhTG9nRigiICAg
ICAgICAgJWQgW2xhYmVsPTxOb2RlICVkIiwgaSwgaSk7CisKKyAgICAgICAgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgb3JpZ2luYWxSdWxlcyA9IG1fbm9kZXNbaV0ucnVsZUlkczsKKyAgICAgICAg
aWYgKCFvcmlnaW5hbFJ1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIjxC
Ui8+KFJ1bGVzOiAiKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcnVsZUluZGV4ID0gMDsg
cnVsZUluZGV4IDwgb3JpZ2luYWxSdWxlcy5zaXplKCk7ICsrcnVsZUluZGV4KSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJ1bGVJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiwg
Iik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVsbHUiLCBvcmlnaW5hbFJ1bGVzW3J1bGVJ
bmRleF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YUxvZ0YoIikiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGZpbmFsUnVsZXMgPSBtX25v
ZGVzW2ldLmZpbmFsUnVsZUlkczsKKyAgICAgICAgaWYgKCFmaW5hbFJ1bGVzLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgZGF0YUxvZ0YoIjxCUi8+KEZpbmFsOiAiKTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgcnVsZUluZGV4ID0gMDsgcnVsZUluZGV4IDwgZmluYWxSdWxlcy5zaXplKCk7
ICsrcnVsZUluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGVJbmRleCkKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVs
bHUiLCBmaW5hbFJ1bGVzW3J1bGVJbmRleF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZGF0YUxvZ0YoIikiKTsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGFMb2dGKCI+XSIpOwogCi0g
ICAgICAgIGlmIChtX25vZGVzW2ldLmlzRmluYWwpCisgICAgICAgIGlmICghZmluYWxSdWxlcy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiIFtzaGFwZT1kb3VibGVjaXJjbGVdIik7
CiAKICAgICAgICAgZGF0YUxvZ0YoIjtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkEuaAppbmRleCBhOGJhZmY2ZGU3NWNkYTM3Mzg0NDY3N2U4NWFmYzQ5MDAxMTVhMTUyLi5k
ZGE3NGY4NDFmY2JiNDQ0NTI3Yjk1MGRjMGJhNGM4NzdhZWFlYzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ORkEuaApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaCIKICNpbmNsdWRlICJORkFOb2RlLmgiCi0jaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDUsMTcgKzQ0LDIxIEBAIGNsYXNzIE5GQSB7CiBwdWJsaWM6CiAgICAgTkZBKCk7CiAg
ICAgdW5zaWduZWQgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQotICAgIHVuc2lnbmVk
IGNyZWF0ZU5vZGUodWludDY0X3QgcnVsZUlkID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVOb2RlKCk7CiAKICAgICB2b2lkIGFkZFRy
YW5zaXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGNoYXIgY2hhcmFjdGVyKTsKICAg
ICB2b2lkIGFkZEVwc2lsb25UcmFuc2l0aW9uKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsK
LSAgICB2b2lkIHNldEZpbmFsKHVuc2lnbmVkIG5vZGUpOworICAgIHZvaWQgc2V0RmluYWwodW5z
aWduZWQgbm9kZSwgdWludDY0X3QgcnVsZUlkKTsKIAogICAgIHVuc2lnbmVkIGdyYXBoU2l6ZSgp
IGNvbnN0OwogICAgIHZvaWQgcmVzdG9yZVRvR3JhcGhTaXplKHVuc2lnbmVkKTsKIAogI2lmIENP
TlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORworICAgIHZvaWQgYWRkUnVs
ZUlkKHVuc2lnbmVkIG5vZGUsIHVpbnQ2NF90IHJ1bGVJZCk7CisKICAgICB2b2lkIGRlYnVnUHJp
bnREb3QoKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBhZGRSdWxlSWQodW5zaWduZWQsIHVpbnQ2
NF90KSB7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkFOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY5OTE3
YzQ2OThmYTYyZjI3OTU2YmI4MTc5M2ZjYzVlMjRlM2FlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTkZBTm9kZS5oIgotCi0jaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMgewotCi1ORkFOb2RlOjpORkFOb2RlKHVpbnQ2NF90IHJ1bGVJZCkK
LSAgICA6IGlzRmluYWwoZmFsc2UpCi0gICAgLCBydWxlSWQocnVsZUlkKQotewotfQotCi19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKaW5kZXgg
ZWEyNDM3NzAwMDBkZWMwNDY4YmM4NTgwYmQzMTBmNTYxZjFmNDVhZC4uOTAwODRiYmUwNjY1YmFl
ZDQxZmJhMjY3MmU1YTc3MjFiYjE2ZDlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQU5vZGUuaApAQCAtMjgsOCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMTEgKzQw
LDEyIEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAvLyBBIE5GQU5vZGUgYWJzdHJh
Y3QgdGhlIHRyYW5zaXRpb24gdGFibGUgb3V0IG9mIGEgTkZBIHN0YXRlLgogY2xhc3MgTkZBTm9k
ZSB7CiBwdWJsaWM6Ci0gICAgTkZBTm9kZSh1aW50NjRfdCBydWxlSWQpOwotCiAgICAgSGFzaE1h
cDx1aW50MTZfdCwgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4+IHRyYW5zaXRp
b25zOwotICAgIGJvb2wgaXNGaW5hbDsKLSAgICBjb25zdCB1aW50NjRfdCBydWxlSWQ7CisKKyAg
ICBWZWN0b3I8dWludDY0X3Q+IGZpbmFsUnVsZUlkczsKKyNpZiBDT05URU5UX0VYVEVOU0lPTlNf
U1RBVEVfTUFDSElORV9ERUJVR0dJTkcKKyAgICBWZWN0b3I8dWludDY0X3Q+IHJ1bGVJZHM7Cisj
ZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRv
REZBLmNwcAppbmRleCA4OTE3NzQxMGZjNmQ0MjIxZGVmZmZkM2RlYTBmYTFmYzZmOWQwYWE2Li42
MjZmNDAwMjQ3NGM3YzZkZDM1MGMyZGZlYmZmMzg1NDY4NWNlYWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0yMTksMTAgKzIxOSw5IEBA
IHN0cnVjdCBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3IgewogICAgICAgICBI
YXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBhY3Rpb25zOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIG5mYU5vZGVJZCA6IHNvdXJjZS5ub2RlSWRTZXQpIHsKICAgICAgICAgICAgIGNv
bnN0IE5GQU5vZGUmIG5mYU5vZGUgPSBzb3VyY2UubmZhR3JhcGhbbmZhTm9kZUlkXTsKLSAgICAg
ICAgICAgIGlmIChuZmFOb2RlLmlzRmluYWwpCi0gICAgICAgICAgICAgICAgYWN0aW9ucy5hZGQo
bmZhTm9kZS5ydWxlSWQpOworICAgICAgICAgICAgYWN0aW9ucy5hZGQobmZhTm9kZS5maW5hbFJ1
bGVJZHMuYmVnaW4oKSwgbmZhTm9kZS5maW5hbFJ1bGVJZHMuZW5kKCkpOwogI2lmIENPTlRFTlRf
RVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwotICAgICAgICAgICAgbmV3REZBTm9k
ZS5jb3JyZXNwb25kaW5nREZBTm9kZXMuYXBwZW5kKG5mYU5vZGVJZCk7CisgICAgICAgICAgICBu
ZXdERkFOb2RlLmNvcnJlc3BvbmRpbmdORkFOb2Rlcy5hcHBlbmQobmZhTm9kZUlkKTsKICNlbmRp
ZgogICAgICAgICB9CiAgICAgICAgIGNvcHlUb1ZlY3RvcihhY3Rpb25zLCBuZXdERkFOb2RlLmFj
dGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJM
RmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5jcHAKaW5kZXggMzg4NDFiZWE3NGExNTZiYzVkOTcwYzBmYzJiOTI0OTQwNjgx
OTRmNC4uM2M1YTU5NGIwZWFiMDM5YTQyZjg2OWRkODIzMGEwOWE4ZjM5ZDU3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3Bw
CkBAIC0zNSw2ICszNSwzNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDb250
ZW50RXh0ZW5zaW9ucyB7CiAKK2NvbnN0IHVpbnQxNl90IGhhc05vbkNoYXJhY3Rlck1hc2sgPSAw
eDAwODA7Citjb25zdCB1aW50MTZfdCBjaGFyYWN0ZXJNYXNrID0gMHgwMDA3RjsKK2NvbnN0IHVp
bnQxNl90IG5ld2xpbmVDbGFzc0lEQnVpbHRpbk1hc2sgPSAweDEwMDsKKworc3RhdGljIFRyaXZp
YWxBdG9tIHRyaXZpYWxBdG9tRnJvbUFzY2lpQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQorewor
ICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnQxNl90PihjaGFyYWN0ZXIpOworfQorCitlbnVtIGNsYXNzIFRyaXZpYWxBdG9tUXVhbnRp
ZmllciA6IHVpbnQxNl90IHsKKyAgICBaZXJvT3JPbmUgPSAweDEwMDAsCisgICAgWmVyb1RvTWFu
eSA9IDB4MjAwMCwKKyAgICBPbmVUb01hbnkgPSAweDQwMDAKK307CisKK3N0YXRpYyB2b2lkIHF1
YW50aWZ5VHJpdmlhbEF0b20oVHJpdmlhbEF0b20mIHRyaXZpYWxUb20sIFRyaXZpYWxBdG9tUXVh
bnRpZmllciBxdWFudGlmaWVyKQoreworICAgIEFTU0VSVCh0cml2aWFsVG9tICYgKGhhc05vbkNo
YXJhY3Rlck1hc2sgfCBjaGFyYWN0ZXJNYXNrKSk7CisgICAgQVNTRVJUKCEodHJpdmlhbFRvbSAm
IDB4ZjAwMCkpOworICAgIHRyaXZpYWxUb20gfD0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHF1YW50
aWZpZXIpOworfQorCitzdGF0aWMgVHJpdmlhbEF0b20gdHJpdmlhbEF0b21Gb3JOZXdsaW5lQ2xh
c3NJREJ1aWx0aW4oKQoreworICAgIHJldHVybiBoYXNOb25DaGFyYWN0ZXJNYXNrIHwgbmV3bGlu
ZUNsYXNzSURCdWlsdGluTWFzazsKK30KKwogY2xhc3MgR3JhcGhCdWlsZGVyIHsKIHByaXZhdGU6
CiAgICAgc3RydWN0IEJvdW5kZWRTdWJHcmFwaCB7CkBAIC00MiwxMSArNzEsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgdW5zaWduZWQgZW5kOwogICAgIH07CiBwdWJsaWM6Ci0gICAgR3JhcGhCdWls
ZGVyKE5GQSYgbmZhLCB1aW50NjRfdCBwYXR0ZXJuSWQpCisgICAgR3JhcGhCdWlsZGVyKE5GQSYg
bmZhLCBQcmVmaXhUcmVlRW50cnkmIHByZWZpeFRyZWVSb290LCB1aW50NjRfdCBwYXR0ZXJuSWQp
CiAgICAgICAgIDogbV9uZmEobmZhKQogICAgICAgICAsIG1fcGF0dGVybklkKHBhdHRlcm5JZCkK
ICAgICAgICAgLCBtX2FjdGl2ZUdyb3VwKHsgbmZhLnJvb3QoKSwgbmZhLnJvb3QoKSB9KQotICAg
ICAgICAsIG1fbGFzdEF0b20obV9hY3RpdmVHcm91cCkKKyAgICAgICAgLCBtX0xhc3RQcmVmaXhU
cmVlRW50cnkoJnByZWZpeFRyZWVSb290KQogICAgIHsKICAgICB9CiAKQEAgLTU0LDggKzgzLDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHNpbmtQZW5kaW5nQXRvbUlmTmVjZXNzYXJ5KCk7CisKICAgICAg
ICAgaWYgKG1fYWN0aXZlR3JvdXAuc3RhcnQgIT0gbV9hY3RpdmVHcm91cC5lbmQpCi0gICAgICAg
ICAgICBtX25mYS5zZXRGaW5hbChtX2FjdGl2ZUdyb3VwLmVuZCk7CisgICAgICAgICAgICBtX25m
YS5zZXRGaW5hbChtX2FjdGl2ZUdyb3VwLmVuZCwgbV9wYXR0ZXJuSWQpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiVGhlIHBhdHRlcm4gY2Fubm90IG1hdGNo
IGFueXRoaW5nLiIpKTsKICAgICB9CkBAIC03NSwxMiArMTA3LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgc2lua1Bl
bmRpbmdBdG9tSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBjaGFyIGFzY2lpQ2hhcmFyYWN0ZXIg
PSBzdGF0aWNfY2FzdDxjaGFyPihjaGFyYWN0ZXIpOwogICAgICAgICBtX2hhc1ZhbGlkQXRvbSA9
IHRydWU7Ci0gICAgICAgIHVuc2lnbmVkIG5ld0VuZCA9IG1fbmZhLmNyZWF0ZU5vZGUobV9wYXR0
ZXJuSWQpOwotICAgICAgICBtX25mYS5hZGRUcmFuc2l0aW9uKG1fbGFzdEF0b20uZW5kLCBuZXdF
bmQsIHN0YXRpY19jYXN0PGNoYXI+KGNoYXJhY3RlcikpOwotICAgICAgICBtX2xhc3RBdG9tLnN0
YXJ0ID0gbV9sYXN0QXRvbS5lbmQ7Ci0gICAgICAgIG1fbGFzdEF0b20uZW5kID0gbmV3RW5kOwot
ICAgICAgICBtX2FjdGl2ZUdyb3VwLmVuZCA9IG1fbGFzdEF0b20uZW5kOworCisgICAgICAgIEFT
U0VSVChtX0xhc3RQcmVmaXhUcmVlRW50cnkpOworICAgICAgICBtX3BlbmRpbmdUcml2aWFsQXRv
bSA9IHRyaXZpYWxBdG9tRnJvbUFzY2lpQ2hhcmFjdGVyKGFzY2lpQ2hhcmFyYWN0ZXIpOwogICAg
IH0KIAogICAgIHZvaWQgYXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhKU0M6OllhcnI6OkJ1aWx0
SW5DaGFyYWN0ZXJDbGFzc0lEIGJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lELCBib29sIGludmVydGVk
KQpAQCAtODksMTQgKzEyMiw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAoYnVpbHRJbkNoYXJhY3RlckNsYXNzSUQgPT0gSlNDOjpZYXJyOjpOZXdsaW5lQ2xh
c3NJRCAmJiBpbnZlcnRlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBuZXcgbGlu
ZSBwcm9wZXJseS4KICAgICAgICAgICAgIG1faGFzVmFsaWRBdG9tID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIG5ld0VuZCA9IG1fbmZhLmNyZWF0ZU5vZGUobV9wYXR0ZXJuSWQpOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEyODsgKytpKQotICAgICAgICAgICAg
ICAgIG1fbmZhLmFkZFRyYW5zaXRpb24obV9sYXN0QXRvbS5lbmQsIG5ld0VuZCwgaSk7Ci0gICAg
ICAgICAgICBtX2xhc3RBdG9tLnN0YXJ0ID0gbV9sYXN0QXRvbS5lbmQ7Ci0gICAgICAgICAgICBt
X2xhc3RBdG9tLmVuZCA9IG5ld0VuZDsKLSAgICAgICAgICAgIG1fYWN0aXZlR3JvdXAuZW5kID0g
bV9sYXN0QXRvbS5lbmQ7CisgICAgICAgICAgICBBU1NFUlQobV9MYXN0UHJlZml4VHJlZUVudHJ5
KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1RyaXZpYWxBdG9tID0gdHJpdmlhbEF0b21Gb3JOZXds
aW5lQ2xhc3NJREJ1aWx0aW4oKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmYWlsKEFT
Q0lJTGl0ZXJhbCgiQ2hhcmFjdGVyIGNsYXNzIGlzIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgIH0K
QEAgLTExMiwxMyArMTQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCisgICAgICAgIEFTU0VSVChtX0xhc3RQcmVmaXhUcmVlRW50cnkpOwogICAgICAgICBp
ZiAoIW1pbmltdW0gJiYgbWF4aW11bSA9PSAxKQotICAgICAgICAgICAgbV9uZmEuYWRkRXBzaWxv
blRyYW5zaXRpb24obV9sYXN0QXRvbS5zdGFydCwgbV9sYXN0QXRvbS5lbmQpOwotICAgICAgICBl
bHNlIGlmICghbWluaW11bSAmJiBtYXhpbXVtID09IEpTQzo6WWFycjo6cXVhbnRpZnlJbmZpbml0
ZSkgewotICAgICAgICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5z
dGFydCwgbV9sYXN0QXRvbS5lbmQpOwotICAgICAgICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5z
aXRpb24obV9sYXN0QXRvbS5lbmQsIG1fbGFzdEF0b20uc3RhcnQpOwotICAgICAgICB9IGVsc2Ug
aWYgKG1pbmltdW0gPT0gMSAmJiBtYXhpbXVtID09IEpTQzo6WWFycjo6cXVhbnRpZnlJbmZpbml0
ZSkKLSAgICAgICAgICAgIG1fbmZhLmFkZEVwc2lsb25UcmFuc2l0aW9uKG1fbGFzdEF0b20uZW5k
LCBtX2xhc3RBdG9tLnN0YXJ0KTsKKyAgICAgICAgICAgIHF1YW50aWZ5VHJpdmlhbEF0b20obV9w
ZW5kaW5nVHJpdmlhbEF0b20sIFRyaXZpYWxBdG9tUXVhbnRpZmllcjo6WmVyb09yT25lKTsKKyAg
ICAgICAgZWxzZSBpZiAoIW1pbmltdW0gJiYgbWF4aW11bSA9PSBKU0M6OllhcnI6OnF1YW50aWZ5
SW5maW5pdGUpCisgICAgICAgICAgICBxdWFudGlmeVRyaXZpYWxBdG9tKG1fcGVuZGluZ1RyaXZp
YWxBdG9tLCBUcml2aWFsQXRvbVF1YW50aWZpZXI6Olplcm9Ub01hbnkpOworICAgICAgICBlbHNl
IGlmIChtaW5pbXVtID09IDEgJiYgbWF4aW11bSA9PSBKU0M6OllhcnI6OnF1YW50aWZ5SW5maW5p
dGUpCisgICAgICAgICAgICBxdWFudGlmeVRyaXZpYWxBdG9tKG1fcGVuZGluZ1RyaXZpYWxBdG9t
LCBUcml2aWFsQXRvbVF1YW50aWZpZXI6Ok9uZVRvTWFueSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJBcmJpdHJhcnkgYXRvbSByZXBldGl0aW9ucyBhcmUg
bm90IHN1cHBvcnRlZC4iKSk7CiAgICAgfQpAQCAtMTg5LDcgKzIxNyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkRpc2p1bmN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5
ZXQuIikpOwogICAgIH0KIAotCiBwcml2YXRlOgogICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdAog
ICAgIHsKQEAgLTIwMCw0MyArMjI3LDE1NCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYg
KGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fbmV3UHJl
Zml4U3VidHJlZVJvb3QpCisgICAgICAgICAgICBtX25ld1ByZWZpeFN1YnRyZWVSb290LT5uZXh0
UGF0dGVybi5yZW1vdmUobV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQpOworCiAgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOwogICAgIH0KIAorICAgIHZvaWQgZ2VuZXJhdGVUcmFu
c2l0aW9uKFRyaXZpYWxBdG9tIHRyaXZpYWxBdG9tLCB1bnNpZ25lZCBzb3VyY2UsIHVuc2lnbmVk
IHRhcmdldCkKKyAgICB7CisgICAgICAgIGlmICh0cml2aWFsQXRvbSAmIGhhc05vbkNoYXJhY3Rl
ck1hc2spIHsKKyAgICAgICAgICAgIEFTU0VSVCh0cml2aWFsQXRvbSAmIG5ld2xpbmVDbGFzc0lE
QnVpbHRpbk1hc2spOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEyODsg
KytpKQorICAgICAgICAgICAgICAgIG1fbmZhLmFkZFRyYW5zaXRpb24oc291cmNlLCB0YXJnZXQs
IGkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbmZhLmFkZFRyYW5zaXRpb24oc291
cmNlLCB0YXJnZXQsIHN0YXRpY19jYXN0PGNoYXI+KHRyaXZpYWxBdG9tICYgY2hhcmFjdGVyTWFz
aykpOworICAgIH0KKworICAgIEJvdW5kZWRTdWJHcmFwaCBzaW5rVHJpdmlhbEF0b20oVHJpdmlh
bEF0b20gdHJpdmlhbEF0b20sIHVuc2lnbmVkIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaWYgKHRy
aXZpYWxBdG9tICYgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KFRyaXZpYWxBdG9tUXVhbnRpZmllcjo6
WmVyb09yT25lKSkgeworICAgICAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gbV9uZmEuY3JlYXRl
Tm9kZSgpOworICAgICAgICAgICAgbV9uZmEuYWRkUnVsZUlkKG5ld0VuZCwgbV9wYXR0ZXJuSWQp
OworICAgICAgICAgICAgZ2VuZXJhdGVUcmFuc2l0aW9uKHRyaXZpYWxBdG9tLCBzdGFydCwgbmV3
RW5kKTsKKyAgICAgICAgICAgIG1fbmZhLmFkZEVwc2lsb25UcmFuc2l0aW9uKHN0YXJ0LCBuZXdF
bmQpOworICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnQsIG5ld0VuZCB9OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRyaXZpYWxBdG9tICYgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KFRyaXZpYWxB
dG9tUXVhbnRpZmllcjo6WmVyb1RvTWFueSkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlcGVh
dFN0YXJ0ID0gbV9uZmEuY3JlYXRlTm9kZSgpOworICAgICAgICAgICAgbV9uZmEuYWRkUnVsZUlk
KHJlcGVhdFN0YXJ0LCBtX3BhdHRlcm5JZCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXBlYXRF
bmQgPSBtX25mYS5jcmVhdGVOb2RlKCk7CisgICAgICAgICAgICBtX25mYS5hZGRSdWxlSWQocmVw
ZWF0RW5kLCBtX3BhdHRlcm5JZCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRlVHJhbnNpdGlvbih0
cml2aWFsQXRvbSwgcmVwZWF0U3RhcnQsIHJlcGVhdEVuZCk7CisgICAgICAgICAgICBtX25mYS5h
ZGRFcHNpbG9uVHJhbnNpdGlvbihyZXBlYXRFbmQsIHJlcGVhdFN0YXJ0KTsKKworICAgICAgICAg
ICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24oc3RhcnQsIHJlcGVhdFN0YXJ0KTsKKworICAg
ICAgICAgICAgdW5zaWduZWQga2xlZW5FbmQgPSBtX25mYS5jcmVhdGVOb2RlKCk7CisgICAgICAg
ICAgICBtX25mYS5hZGRSdWxlSWQoa2xlZW5FbmQsIG1fcGF0dGVybklkKTsKKyAgICAgICAgICAg
IG1fbmZhLmFkZEVwc2lsb25UcmFuc2l0aW9uKHJlcGVhdEVuZCwga2xlZW5FbmQpOworICAgICAg
ICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24oc3RhcnQsIGtsZWVuRW5kKTsKKyAgICAg
ICAgICAgIHJldHVybiB7IHN0YXJ0LCBrbGVlbkVuZCB9OworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRyaXZpYWxBdG9tICYgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KFRyaXZpYWxBdG9tUXVhbnRp
Zmllcjo6T25lVG9NYW55KSkgeworICAgICAgICAgICAgdW5zaWduZWQgcmVwZWF0U3RhcnQgPSBt
X25mYS5jcmVhdGVOb2RlKCk7CisgICAgICAgICAgICBtX25mYS5hZGRSdWxlSWQocmVwZWF0U3Rh
cnQsIG1fcGF0dGVybklkKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlcGVhdEVuZCA9IG1fbmZh
LmNyZWF0ZU5vZGUoKTsKKyAgICAgICAgICAgIG1fbmZhLmFkZFJ1bGVJZChyZXBlYXRFbmQsIG1f
cGF0dGVybklkKTsKKworICAgICAgICAgICAgZ2VuZXJhdGVUcmFuc2l0aW9uKHRyaXZpYWxBdG9t
LCByZXBlYXRTdGFydCwgcmVwZWF0RW5kKTsKKyAgICAgICAgICAgIG1fbmZhLmFkZEVwc2lsb25U
cmFuc2l0aW9uKHJlcGVhdEVuZCwgcmVwZWF0U3RhcnQpOworCisgICAgICAgICAgICBtX25mYS5h
ZGRFcHNpbG9uVHJhbnNpdGlvbihzdGFydCwgcmVwZWF0U3RhcnQpOworCisgICAgICAgICAgICB1
bnNpZ25lZCBhZnRlclJlcGVhdCA9IG1fbmZhLmNyZWF0ZU5vZGUoKTsKKyAgICAgICAgICAgIG1f
bmZhLmFkZFJ1bGVJZChhZnRlclJlcGVhdCwgbV9wYXR0ZXJuSWQpOworICAgICAgICAgICAgbV9u
ZmEuYWRkRXBzaWxvblRyYW5zaXRpb24ocmVwZWF0RW5kLCBhZnRlclJlcGVhdCk7CisgICAgICAg
ICAgICByZXR1cm4geyBzdGFydCwgYWZ0ZXJSZXBlYXQgfTsKKyAgICAgICAgfQorCisgICAgICAg
IHVuc2lnbmVkIG5ld0VuZCA9IG1fbmZhLmNyZWF0ZU5vZGUoKTsKKyAgICAgICAgbV9uZmEuYWRk
UnVsZUlkKG5ld0VuZCwgbV9wYXR0ZXJuSWQpOworICAgICAgICBnZW5lcmF0ZVRyYW5zaXRpb24o
dHJpdmlhbEF0b20sIHN0YXJ0LCBuZXdFbmQpOworICAgICAgICByZXR1cm4geyBzdGFydCwgbmV3
RW5kIH07CisgICAgfQorCisgICAgdm9pZCBzaW5rUGVuZGluZ0F0b21JZk5lY2Vzc2FyeSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9MYXN0UHJlZml4VHJlZUVudHJ5KTsKKworICAgICAgICBp
ZiAoIW1faGFzVmFsaWRBdG9tKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VS
VChtX3BlbmRpbmdUcml2aWFsQXRvbSk7CisKKyAgICAgICAgYXV0byBuZXh0RW50cnkgPSBtX0xh
c3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLmZpbmQobV9wZW5kaW5nVHJpdmlhbEF0b20p
OworICAgICAgICBpZiAobmV4dEVudHJ5ICE9IG1fTGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4dFBh
dHRlcm4uZW5kKCkpIHsKKyAgICAgICAgICAgIG1fTGFzdFByZWZpeFRyZWVFbnRyeSA9IG5leHRF
bnRyeS0+dmFsdWUuZ2V0KCk7CisgICAgICAgICAgICBtX25mYS5hZGRSdWxlSWQobV9MYXN0UHJl
Zml4VHJlZUVudHJ5LT5uZmFOb2RlLCBtX3BhdHRlcm5JZCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZUVudHJ5PiBuZXh0UHJlZml4VHJl
ZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlRW50cnk+KCk7CisKKyAgICAgICAg
ICAgIEJvdW5kZWRTdWJHcmFwaCBuZXdTdWJHcmFwaCA9IHNpbmtUcml2aWFsQXRvbShtX3BlbmRp
bmdUcml2aWFsQXRvbSwgbV9MYXN0UHJlZml4VHJlZUVudHJ5LT5uZmFOb2RlKTsKKyAgICAgICAg
ICAgIG5leHRQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUgPSBuZXdTdWJHcmFwaC5lbmQ7CisKKyAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9MYXN0UHJlZml4VHJlZUVudHJ5LT5uZXh0UGF0
dGVybi5zZXQobV9wZW5kaW5nVHJpdmlhbEF0b20sIFdURjo6bW92ZShuZXh0UHJlZml4VHJlZUVu
dHJ5KSk7CisgICAgICAgICAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAg
ICAgICAgICBtX25ld1ByZWZpeFN1YnRyZWVSb290ID0gbV9MYXN0UHJlZml4VHJlZUVudHJ5Owor
ICAgICAgICAgICAgbV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQgPSBtX3BlbmRpbmdUcml2aWFsQXRv
bTsKKworICAgICAgICAgICAgbV9MYXN0UHJlZml4VHJlZUVudHJ5ID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9MYXN0UHJlZml4
VHJlZUVudHJ5KTsKKworICAgICAgICBtX2FjdGl2ZUdyb3VwLmVuZCA9IG1fTGFzdFByZWZpeFRy
ZWVFbnRyeS0+bmZhTm9kZTsKKyAgICAgICAgbV9wZW5kaW5nVHJpdmlhbEF0b20gPSAwOworICAg
ICAgICBtX2hhc1ZhbGlkQXRvbSA9IGZhbHNlOworICAgIH0KKwogICAgIE5GQSYgbV9uZmE7CiAg
ICAgY29uc3QgdWludDY0X3QgbV9wYXR0ZXJuSWQ7CiAKICAgICBCb3VuZGVkU3ViR3JhcGggbV9h
Y3RpdmVHcm91cDsKIAorICAgIFByZWZpeFRyZWVFbnRyeSogbV9MYXN0UHJlZml4VHJlZUVudHJ5
OwogICAgIGJvb2wgbV9oYXNWYWxpZEF0b20gPSBmYWxzZTsKLSAgICBCb3VuZGVkU3ViR3JhcGgg
bV9sYXN0QXRvbTsKKyAgICBUcml2aWFsQXRvbSBtX3BlbmRpbmdUcml2aWFsQXRvbSA9IDA7CisK
KyAgICBQcmVmaXhUcmVlRW50cnkqIG1fbmV3UHJlZml4U3VidHJlZVJvb3QgPSBudWxscHRyOwor
ICAgIFRyaXZpYWxBdG9tIG1fbmV3UHJlZml4U3RhcmluZ1BvaW50ID0gMDsKIAogICAgIFN0cmlu
ZyBtX2Vycm9yTWVzc2FnZTsKIH07CiAKLXZvaWQgVVJMRmlsdGVyUGFyc2VyOjpwYXJzZShjb25z
dCBTdHJpbmcmIHBhdHRlcm4sIHVpbnQ2NF90IHBhdHRlcm5JZCwgTkZBJiBuZmEpCitVUkxGaWx0
ZXJQYXJzZXI6OlVSTEZpbHRlclBhcnNlcihORkEmIG5mYSkKKyAgICA6IG1fbmZhKG5mYSkKK3sK
KyAgICBtX3ByZWZpeFRyZWVSb290Lm5mYU5vZGUgPSBuZmEucm9vdCgpOworfQorCitTdHJpbmcg
VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdWludDY0
X3QgcGF0dGVybklkKQogewogICAgIGlmICghcGF0dGVybi5jb250YWluc09ubHlBU0NJSSgpKQot
ICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVVJMRmlsdGVyUGFyc2VyIG9u
bHkgc3VwcG9ydHMgQVNDSUkgcGF0dGVybnMuIik7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIlVSTEZpbHRlclBhcnNlciBvbmx5IHN1cHBvcnRzIEFTQ0lJIHBhdHRlcm5zLiIpOwogICAg
IEFTU0VSVCghcGF0dGVybi5pc0VtcHR5KCkpOwogCiAgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkVtcHR5IHBh
dHRlcm4uIik7CisKKyAgICB1bnNpZ25lZCBvbGRTaXplID0gbV9uZmEuZ3JhcGhTaXplKCk7CiAK
LSAgICB1bnNpZ25lZCBvbGRTaXplID0gbmZhLmdyYXBoU2l6ZSgpOworICAgIFN0cmluZyBlcnJv
cjsKIAotICAgIEdyYXBoQnVpbGRlciBncmFwaEJ1aWxkZXIobmZhLCBwYXR0ZXJuSWQpOwotICAg
IGNvbnN0IGNoYXIqIGVycm9yID0gSlNDOjpZYXJyOjpwYXJzZShncmFwaEJ1aWxkZXIsIHBhdHRl
cm4sIDApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmco
ZXJyb3IpOwotICAgIGVsc2UKKyAgICBHcmFwaEJ1aWxkZXIgZ3JhcGhCdWlsZGVyKG1fbmZhLCBt
X3ByZWZpeFRyZWVSb290LCBwYXR0ZXJuSWQpOworICAgIGVycm9yID0gU3RyaW5nKEpTQzo6WWFy
cjo6cGFyc2UoZ3JhcGhCdWlsZGVyLCBwYXR0ZXJuLCAwKSk7CisgICAgaWYgKGVycm9yLmlzTnVs
bCgpKQogICAgICAgICBncmFwaEJ1aWxkZXIuZmluYWxpemUoKTsKIAotICAgIGlmICghZXJyb3Ip
Ci0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZ3JhcGhCdWlsZGVyLmVycm9yTWVzc2FnZSgpOwor
ICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICAgICAgZXJyb3IgPSBncmFwaEJ1aWxkZXIuZXJy
b3JNZXNzYWdlKCk7CisKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBtX25mYS5y
ZXN0b3JlVG9HcmFwaFNpemUob2xkU2l6ZSk7CiAKLSAgICBpZiAoaGFzRXJyb3IoKSkKLSAgICAg
ICAgbmZhLnJlc3RvcmVUb0dyYXBoU2l6ZShvbGRTaXplKTsKKyAgICByZXR1cm4gZXJyb3I7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oCmluZGV4IDNlYzgwMjRhNjNl
ODRiYmFkZTdmYzE0YzAzMzkzYWI3Njc3YjgwNmQuLjkxMTdjZTk2MWM2MWI0YzU1N2E4MTg0Zjcz
MTU2OTQwM2IyYTc5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjAgKzM3
LDIyIEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIE5GQTsKIAordHlw
ZWRlZiB1aW50MTZfdCBUcml2aWFsQXRvbTsKKworc3RydWN0IFByZWZpeFRyZWVFbnRyeSB7Cisg
ICAgdW5zaWduZWQgbmZhTm9kZTsKKyAgICBIYXNoTWFwPFRyaXZpYWxBdG9tLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJlZml4VHJlZUVudHJ5Pj4gbmV4dFBhdHRlcm47Cit9OworCisKIGNsYXNzIFVSTEZp
bHRlclBhcnNlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIHVpbnQ2NF90IHBhdHRlcm5JZCwgTkZBJik7Ci0KLSAgICBib29sIGhhc0Vycm9yKCkgY29u
c3QgeyByZXR1cm4gIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpOyB9Ci0gICAgU3RyaW5nIGVycm9y
TWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JNZXNzYWdlOyB9CisgICAgVVJMRmlsdGVy
UGFyc2VyKE5GQSYpOworICAgIFN0cmluZyBhZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVy
biwgdWludDY0X3QgcGF0dGVybklkKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgQm91bmRlZFN1
YkdyYXBoIHsKLSAgICAgICAgdW5zaWduZWQgc3RhcnQ7Ci0gICAgICAgIHVuc2lnbmVkIGVuZDsK
LSAgICB9OwotCi0gICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworICAgIE5GQSYgbV9uZmE7Cisg
ICAgUHJlZml4VHJlZUVudHJ5IG1fcHJlZml4VHJlZVJvb3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucwo=
</data>
<flag name="review"
          id="269579"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>