<?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>130305</bug_id>
          
          <creation_ts>2014-03-16 11:11:40 -0700</creation_ts>
          <short_desc>Remove all deprecatedCharacters use from WebKit framework</short_desc>
          <delta_ts>2014-03-16 19:45:23 -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>WebKit Misc.</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>
          
          <blocked>126854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990983</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 11:11:40 -0700</bug_when>
    <thetext>Remove all deprecatedCharacters use from WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990985</commentid>
    <comment_count>1</comment_count>
      <attachid>226845</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 11:19:09 -0700</bug_when>
    <thetext>Created attachment 226845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990988</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 11:22:27 -0700</bug_when>
    <thetext>Patch does not deal with ios/Misc/WebNSStringDrawing.mm but deals with all the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990991</commentid>
    <comment_count>3</comment_count>
      <attachid>226845</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-16 11:30:34 -0700</bug_when>
    <thetext>Comment on attachment 226845
Patch

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

&gt; Source/WebKit/win/WebHistory.cpp:568
&gt; +    for (auto&amp; url = m_entriesByURL.keys())

:, not =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990992</commentid>
    <comment_count>4</comment_count>
      <attachid>226847</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 11:37:27 -0700</bug_when>
    <thetext>Created attachment 226847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991015</commentid>
    <comment_count>5</comment_count>
      <attachid>226853</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 12:48:48 -0700</bug_when>
    <thetext>Created attachment 226853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991038</commentid>
    <comment_count>6</comment_count>
      <attachid>226860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 14:31:43 -0700</bug_when>
    <thetext>Created attachment 226860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991039</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 14:32:06 -0700</bug_when>
    <thetext>Patch ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991070</commentid>
    <comment_count>8</comment_count>
      <attachid>226860</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-16 19:28:03 -0700</bug_when>
    <thetext>Comment on attachment 226860
Patch

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

r=me

&gt; Source/WebKit/win/DOMCoreClasses.cpp:1261
&gt; +    // FIXME: This leaks. Delete this whole function to get rid of the leak.

Oof.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991072</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-16 19:45:23 -0700</bug_when>
    <thetext>Committed r165715: &lt;http://trac.webkit.org/changeset/165715&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226845</attachid>
            <date>2014-03-16 11:19:09 -0700</date>
            <delta_ts>2014-03-16 11:37:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130305-20140316111855.patch</filename>
            <type>text/plain</type>
            <size>25550</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmY0ZTk4NjY1
ZDIxMWIyZmVlYTEyOThmNmU0NzJiNDY2Mjg5ZTg0Yy4uN2Y3ZTM4ZWFlMDhmNTJhOWY0NjUyNGJi
YWE1NDY3ODQ1ZDU3ZWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTAzLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
YWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIHVzZSBmcm9tIFdlYktpdCBkaXJlY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXpl
cjo6YXBwZW5kU3RyaW5nT2JqZWN0KTogVXNlIG9wZXJhdG9yW10KKyAgICAgICAgaW5zdGVhZCBv
ZiBkZXByZWNhdGVkQ2hhcmFjdGVycy4KKwogMjAxNC0wMy0xNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgcHJvZHVjdGlvbiBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAwNTFiZjEyMDU3YWY5NDQyY2U5NDc0Y2EyZTY3ZGU4NTY1NzM5MTI5Li4yNDhm
Njg3YTBiNDVmZTg5NzcxZjE5NmUwZDBkYzJjM2E4YmEwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgdXNlIGZyb20gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFj
Y2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X3RleHQp
OiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVuLAorICAgICAgICB3aGlj
aCBoYW5kbGVzIFN0cmluZyBkaXJlY3RseS4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRf
dGV4dEJlZm9yZU9mZnNldCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRfdGV4
dEF0T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X2F0dHJpYnV0
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBE
T01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoRE9N
RWxlbWVudDo6Zm9udCk6IFJld29yayB0aGlzIHRvIGxlYWsgYSBzdHJpbmcsIHNpbmNlIGl0IHJl
dHVybnMgYQorICAgICAgICBwb2ludGVyIHRvIGEgZm9udCBmYW1pbHkgbmFtZSdzIGNoYXJhY3Rl
cnMgd2l0aCBubyBkZWZpbmVkIGxpZmV0aW1lLgorCisgICAgICAgICogRE9NSFRNTENsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dCk6IFVzZSBCU3RyaW5nJ3Mg
U3RyaW5nLWJhc2VkIGNvbnN0cnVjdG9yLAorICAgICAgICBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkg
cGFzc2luZyBhIGNoYXJhY3RlciBwb2ludGVyLgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50
OjphY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKTog
RGl0dG8uCisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSk6IERpdHRvLgorICAg
ICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUpOiBEaXR0by4KKworICAgICAgICAq
IE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBh
dGhTdHJpbmdUb0ZpbGVDRlVSTFJlZik6IFVzZSBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OnVw
Y29udmVydGVkQ2hhcmFjdGVycy4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6dW5yZWFjaGFibGVVUkwpOiBVc2UgQlN0cmluZydzIFN0cmlu
Zy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHBhc3Np
bmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKworICAgICAgICAqIFdlYkRvd25sb2FkLmNwcDoKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCk6IFVzZSBCU3RyaW5n
IGluc3RlYWQgb2YgU3lzQWxsb2NTdHJpbmdMZW4uCisKKyAgICAgICAgKiBXZWJEb3dubG9hZENG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRGaW5pc2gpOiBVc2UgQlN0cmluZydz
IFN0cmluZy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5
IHBhc3NpbmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwu
Y3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKGNvbnZlcnRT
dHJpbmdUb1ZhcmlhbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVu
LgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZTo6bWF0Y2hMYWJl
bHNBZ2FpbnN0RWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJIaXN0b3J5OjphZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cCk6IFVzZSBhIGJl
dHRlciBsb29wIGFuZCBjYWxsCisgICAgICAgIHZpc2l0ZWRMaW5rSGFzaCwgc2luY2UgaXQgY2Fu
IHRha2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAg
IChDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgpOiBVc2UgU3RyaW5nVmlldzo6Z2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQuCisgICAgICAgIChSaWdodFRydW5jYXRlU3RyaW5nVG9XaWR0aCk6
IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9j
U3RyaW5nTGVuLgorICAgICAgICAoV2ViVmlldzo6Y3VzdG9tVXNlckFnZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJWaWV3Ojpncm91cE5hbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYlZpZXc6OnNl
bGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252
ZXJ0U3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0Lgor
CiAyMDE0LTAzLTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNv
cHlyaWdodCBoZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jp
bmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKaW5kZXggOTMwOTgyNWYzMmM0ODFkZWQ1ZjhjY2I2NzdjODQ5YmYxYTY0
YmRmMy4uYTBiYjdhM2M1OGYyYmUwN2IxY2UwNmNiYjgxOTk3ZmU4ZDM3YjhhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtNjkx
LDI3ICs2OTEsMjUgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVyOjphcHBlbmRJ
bnRlZ2VyKHNpemVfdCBpbnRlZ2VyKQogdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVy
OjphcHBlbmRTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc3RhcnRP
YmplY3QoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5kZXByZWNhdGVk
Q2hhcmFjdGVycygpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAg
ICBpZiAoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsKKyAgICBp
ZiAoc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKICAgICAgICAgaWYgKGxlbmd0aCA8PSBt
YXhMZW5ndGhJbk1hcmtlckJ5dGUpCiAgICAgICAgICAgICBhcHBlbmRCeXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGFzY2lpU3RyaW5nTWFya2VyQnl0ZSB8IGxlbmd0aCkpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGFwcGVuZEJ5dGUoYXNjaWlTdHJpbmdXaXRoU2VwYXJhdGVM
ZW5ndGhNYXJrZXJCeXRlKTsKLSAgICAgICAgICAgIGFwcGVuZEludGVnZXIobGVuZ3RoKTsKKyAg
ICAgICAgICAgIGFwcGVuZEludGVnZXIoc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgfQotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBh
cHBlbmRCeXRlKGNoYXJhY3RlcnNbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBhcHBlbmRCeXRlKHN0cmluZ1tp
XSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGxlbmd0aCA8PSBtYXhMZW5ndGhJbk1hcmtl
ckJ5dGUpCi0gICAgICAgICAgICBhcHBlbmRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHVuaWNvZGVTdHJpbmdNYXJrZXJCeXRlIHwgbGVuZ3RoKSk7CisgICAgICAgIGlmIChzdHJpbmcu
bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoSW5NYXJrZXJCeXRlKQorICAgICAgICAgICAgYXBwZW5kQnl0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1bmljb2RlU3RyaW5nTWFya2VyQnl0ZSB8IHN0
cmluZy5sZW5ndGgoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFwcGVuZEJ5dGUo
dW5pY29kZVN0cmluZ1dpdGhTZXBhcmF0ZUxlbmd0aE1hcmtlckJ5dGUpOwotICAgICAgICAgICAg
YXBwZW5kSW50ZWdlcihsZW5ndGgpOworICAgICAgICAgICAgYXBwZW5kSW50ZWdlcihzdHJpbmcu
bGVuZ3RoKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0ZXJzW2ldID4+IDgp
OwotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBh
cHBlbmRCeXRlKHN0cmluZ1tpXSA+PiA4KTsKKyAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5n
W2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0FjY2Vzc2libGVUZXh0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlVGV4
dEltcGwuY3BwCmluZGV4IDJlZGMzNjZkYWZkZWNkMDJkZDEwZmYyNzJhMTc1NTQ2OTE4Y2ZmMDUu
LjBkNzBiNWMzYWI4MDZkMTM4NzdmN2MxZTFhNmRmMzg4MWU2ZTA1NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIEhSRVNVTFQg
QWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0KGxvbmcgc3RhcnRPZmZzZXQsIGxvbmcgZW5kT2Zmc2V0
LCBCU1RSKiB0ZXh0KQogICAgIGVuZE9mZnNldCA9IGNvbnZlcnRTcGVjaWFsT2Zmc2V0KGVuZE9m
ZnNldCk7CiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT5zdHJpbmdW
YWx1ZSgpLnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQpOwog
Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmlu
ZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3Ro
KCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApAQCAtMjU2LDcg
KzI1Niw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QmVmb3JlT2Zmc2V0KGxv
bmcgb2Zmc2V0LCBlbnVtIElBMlRleHRCb3VuZGFyeVR5CiAgICAgICAgIHJldHVybiBTX0ZBTFNF
OwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vi
c3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRl
eHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJp
bmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAh
KnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpAQCAtMzI0LDcgKzMyNCw3IEBA
IEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QWZ0ZXJPZmZzZXQobG9uZyBvZmZzZXQs
IGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwCiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAg
V1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpz
dGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNB
bGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0
cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5y
ZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAg
ICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApAQCAtMzg0LDcgKzM4NCw3IEBAIEhSRVNVTFQg
QWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QXRPZmZzZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4
dEJvdW5kYXJ5VHlwZSBiCiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJp
bmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNl
dCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmlu
Z0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQu
bGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7
CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwpAQCAtNjc0LDcgKzY3NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJs
ZVRleHQ6OnNldEF0dHJpYnV0ZXMobG9uZyBzdGFydE9mZnNldCwgbG9uZyBlbmRPZmZzZXQsIEJT
VFIqIGF0CiBIUkVTVUxUIEFjY2Vzc2libGVUZXh0OjpnZXRfYXR0cmlidXRlcyhCU1RSKiBhdHRy
aWJ1dGVzKQogewogICAgIFdURjo6U3RyaW5nIHRleHQoInRleHQtbW9kZWw6YTEiKTsKLSAgICAq
YXR0cmlidXRlcyA9IFN5c0FsbG9jU3RyaW5nTGVuKHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgKmF0dHJpYnV0ZXMgPSBCU3RyaW5nKHRleHQpLnJlbGVh
c2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNw
cAppbmRleCA4YTU3ODBjNDdkOTI0MTUxN2FmMWU4NTQzNmNmZjAwY2Y0NWY4OTQzLi5kMTMxMWNm
NGI5ZDk5MjJkZjI0MzJjOTY0MWI1ZDQxMjBlZGI3Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1ND
bGFzc2VzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2lu
Y2x1ZGUgIkRPTUNTU0NsYXNzZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvLyBET01DU1NTdHlsZURlY2xhcmF0
aW9uIC0gRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0xMDIsNyArMTAzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKAogewogICAgIFdURjo6U3RyaW5nIHByb3Bl
cnR5TmFtZVN0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgIFdURjo6U3RyaW5nIHZhbHVlID0gbV9z
dHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWVTdHJpbmcpOwotICAgICpyZXN1bHQg
PSBTeXNBbGxvY1N0cmluZ0xlbih2YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB2YWx1ZS5s
ZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWUpLnJlbGVhc2UoKTsKICAgICBp
ZiAodmFsdWUubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVN
T1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9N
Q29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmlu
ZGV4IGVjYWYyOWEyODI3MDdlOTdiNDM3YWRjNTc2MGNjZjlmOGEzYTU0MjAuLjhiOWQ1MmVjMGQ5
MGNlOGNmM2VlODFkNDFmMmZhM2VlYjJlYjhjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xh
c3Nlcy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TU5vZGU6Om5vZGVWYWx1ZSgKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKICAgICBXVEY6OlN0cmluZyBub2RlVmFsdWVTdHIgPSBtX25vZGUtPm5vZGVWYWx1ZSgpOwot
ICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbihub2RlVmFsdWVTdHIuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgbm9kZVZhbHVlU3RyLmxlbmd0aCgpKTsKKyAgICAqcmVzdWx0ID0gQlN0cmlu
Zyhub2RlVmFsdWVTdHIpLnJlbGVhc2UoKTsKICAgICBpZiAobm9kZVZhbHVlU3RyLmxlbmd0aCgp
ICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4g
U19PSzsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
RWxlbWVudDo6Z2V0QXR0cmlidXRlKAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdURjo6
U3RyaW5nIG5hbWVTdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKTsKICAgICBXVEY6OlN0
cmluZyYgYXR0clZhbHVlU3RyaW5nID0gKFdURjo6U3RyaW5nJikgbV9lbGVtZW50LT5nZXRBdHRy
aWJ1dGUobmFtZVN0cmluZyk7Ci0gICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nTGVuKGF0dHJW
YWx1ZVN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBhdHRyVmFsdWVTdHJpbmcubGVuZ3Ro
KCkpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGF0dHJWYWx1ZVN0cmluZykucmVsZWFzZSgpOwog
ICAgIGlmIChhdHRyVmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI1Nyw3ICsxMjU3LDEy
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Zm9udChXZWJGb250RGVz
Y3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvCiAKICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gcmVuZGVyZXItPnN0eWxlKCkuZm9udCgpLmZvbnREZXNjcmlwdGlvbigpOwog
ICAgIEF0b21pY1N0cmluZyBmYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsK
LSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseS5zdHJpbmcoKS5kZXByZWNh
dGVkQ2hhcmFjdGVycygpOworCisgICAgLy8gRklYTUU6IFRoaXMgbGVha3MuIERlbGV0ZSB0aGlz
IHdob2xlIGZ1bmN0aW9uIHRvIGdldCByaWQgb2YgdGhlIGxlYWsuCisgICAgVUNoYXIqIGZhbWls
eUNoYXJhY3RlcnNCdWZmZXIgPSBuZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKKyAgICBTdHJp
bmdWaWV3KGZhbWlseS5zdHJpbmcoKSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5
Q2hhcmFjdGVyc0J1ZmZlcik7CisKKyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZh
bWlseUNoYXJhY3RlcnNCdWZmZXI7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5n
dGggPSBmYW1pbHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9s
ZCA9IGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBXZWJDb3JlOjpGb250V2VpZ2h0NjAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IGEyZjA4MmMxMTNjZjc4M2I3ODA2
ZDA1OWMyOWM1ZTMxYzU3NzJhZDguLmIzOGM3N2E2ZTZmNjMzMDM1YTZkNTkzMGQ5YjcxODIwNzZh
MDk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQ4Myw3ICs0ODMs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQo
CiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7
CiAgICAgV1RGOjpTdHJpbmcgaW5uZXJUZXh0U3RyaW5nID0gdG9IVE1MRWxlbWVudChtX2VsZW1l
bnQpLT5pbm5lclRleHQoKTsKLSAgICAqcmVzdWx0ID0gQlN0cmluZyhpbm5lclRleHRTdHJpbmcu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgaW5uZXJUZXh0U3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNl
KCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoaW5uZXJUZXh0U3RyaW5nKS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIApAQCAtNTYxLDcgKzU2MSw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjphY3Rpb24oCiB7CiAgICAgQVNT
RVJUKG1fZWxlbWVudCAmJiBpc0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKICAgICBXVEY6
OlN0cmluZyBhY3Rpb25TdHJpbmcgPSB0b0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpLT5hY3Rp
b24oKTsKLSAgICAqcmVzdWx0ID0gQlN0cmluZyhhY3Rpb25TdHJpbmcuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSwgYWN0aW9uU3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9
IEJTdHJpbmcoYWN0aW9uU3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
ICAgCkBAIC01OTEsNyArNTkxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
Rm9ybUVsZW1lbnQ6Om1ldGhvZCgKIHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTEZv
cm1FbGVtZW50KG1fZWxlbWVudCkpOwogICAgIFdURjo6U3RyaW5nIG1ldGhvZFN0cmluZyA9IHRv
SFRNTEZvcm1FbGVtZW50KG1fZWxlbWVudCktPm1ldGhvZCgpOwotICAgICpyZXN1bHQgPSBCU3Ry
aW5nKG1ldGhvZFN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtZXRob2RTdHJpbmcubGVu
Z3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTEyMTAsNyArMTIxMCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dmFsdWUoCiAg
ICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CiAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KG1f
ZWxlbWVudCk7CiAgICAgV1RGOjpTdHJpbmcgdmFsdWVTdHJpbmcgPSBpbnB1dEVsZW1lbnQtPnZh
bHVlKCk7Ci0gICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVTdHJpbmcuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSwgdmFsdWVTdHJpbmcubGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0g
QlN0cmluZyh2YWx1ZVN0cmluZykucmVsZWFzZSgpOwogICAgIGlmICh2YWx1ZVN0cmluZy5sZW5n
dGgoKSAmJiAhKnJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0
dXJuIFNfT0s7CkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKAogICAgIEFTU0VSVChtX2VsZW1lbnQgJiYg
aXNIVE1MVGV4dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOwogICAgIEhUTUxUZXh0QXJlYUVsZW1l
bnQqIHRleHRhcmVhRWxlbWVudCA9IHRvSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpOwog
ICAgIFdURjo6U3RyaW5nIHZhbHVlU3RyaW5nID0gdGV4dGFyZWFFbGVtZW50LT52YWx1ZSgpOwot
ICAgICpyZXN1bHQgPSBCU3RyaW5nKHZhbHVlU3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCks
IHZhbHVlU3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmco
dmFsdWVTdHJpbmcpLnJlbGVhc2UoKTsKICAgICBpZiAodmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYg
ISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggZTUyMzczMTFj
Y2U3NjE2MzkyYjZhMjQ3MTY0OTIyZjRjODk0NDI3OS4uMzMyMDAxMThhMWJkNTA1ZGMzOTA3Mzdk
YjJiZjYwYmFmN2JkMWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMu
Y3BwCkBAIC01MSwxMCArNTEsNyBAQCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RS
KGNvbnN0IFVSTCYgdXJsKQogCiBDRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJp
bmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBDRlN0cmluZ1Jl
ZiBjZlBhdGggPSBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIChjb25zdCBV
bmlDaGFyKilzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBr
Q0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBDRlVSTFJlZiBwYXRoVVJMID0gQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7
Ci0gICAgQ0ZSZWxlYXNlKGNmUGF0aCk7Ci0gICAgcmV0dXJuIHBhdGhVUkw7CisgICAgcmV0dXJu
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7CiB9CiAKIFN0cmluZyBNYXJz
aGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggM2E0NDQ5MWE1MDRjZjk2NWRjM2Q0OWEwZTdjYWNiNWY5YTI3MmUwNS4u
MzFiYmMwNjIwZWEwMTk4MGI3ZjlmNGNhMTEzNTBhOTJlMjUxYjE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02
NjgsNyArNjY4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmlu
ZyhTdHJpbmdWaWV3IHRleHQsIGludCogbWlzc3BlbGxpbmdMb2MKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7Ci0gICAgZWQtPmNoZWNr
U3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudG9TdHJpbmdXaXRob3V0Q29weWluZygp
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRp
b24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1f
d2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlz
c3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRp
dG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25z
dCBTdHJpbmcmIGlucHV0V29yZCkKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1h
ckRldGFpbAogCiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAg
Q09NUHRyPElFbnVtV2ViR3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChG
QUlMRUQoZWQtPmNoZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgJmVu
dW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1tYXJMZW5ndGgpKSkKKyAg
ICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFk
R3JhbW1hckxvY2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDVk
ZDJiYmQ3ZWYyNTMzNzkzZTlhYjJhOGE2NmI4NmQ1ZTg3ZTcwMWEuLjhmZWU4ZWI0MGU2NDRiMTZk
MWU4MTU2ODYyYTdjOGI4MjJkZTg1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CkBAIC0yNTUsNyArMjU1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291
cmNlOjp1bnJlYWNoYWJsZVVSTCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkK
IHsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
LSAgICBCU3RyaW5nIHVybFN0cmluZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCku
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkp
OworICAgIEJTdHJpbmcgdXJsU3RyaW5nKHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKIAogICAg
ICp1cmwgPSB1cmxTdHJpbmcucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWQuY3BwCmluZGV4IGVjMDYzNGJmMGM5ODJmNjE1ODU2NjNlYTA3MThkYzA5OGMz
NTYxMTUuLmQ4MjBjZjU5MDczYzRjNDU5MmRlODZmNjQ0NmQ3N2E4NGIzMzI3ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCgKICAgICAgICAg
YnVuZGxlLnRydW5jYXRlKDEpOwogCiAgICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6
ZmlsZUV4dGVuc2lvbigpKTsKLSAgICAqYnVuZGxlUGF0aCA9IFN5c0FsbG9jU3RyaW5nTGVuKGJ1
bmRsZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBidW5kbGUubGVuZ3RoKCkpOworICAgICpidW5k
bGVQYXRoID0gQlN0cmluZyhidW5kbGUpLnJlbGVhc2UoKTsKICAgICBpZiAoISpidW5kbGVQYXRo
KQogICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDBmNmZlZWY4YjkxNzlhODkyNGM5MzQxYTNkZWYx
ZTFlMTEwZDI0ZTEuLjVkZmJhMjkzOWFmY2E5OTU5YTRiZTA1ZjFlMzgzNTU3M2U4ZDFjMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAg
dm9pZCBXZWJEb3dubG9hZDo6ZGlkRmluaXNoKCkKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVw
b3J0QnVuZGxlUGF0aEFzRmluYWxQYXRoID0gdHJ1ZTsKIAotICAgICAgICBCU3RyaW5nIGRlc3Rp
bmF0aW9uQlNUUihtX2Rlc3RpbmF0aW9uLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIG1fZGVzdGlu
YXRpb24ubGVuZ3RoKCkpOworICAgICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3Rp
bmF0aW9uKTsKICAgICAgICAgaWYgKEZBSUxFRChtX2RlbGVnYXRlLT5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSh0aGlzLCBkZXN0aW5hdGlvbkJTVFIpKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKCkgZmFpbGVkIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmlu
ZGV4IGFmZmVhNjc3MDdlMWQ3ZDM1Y2Q3N2Y4NWNmNTk4MzY0ODhmN2I4MDYuLjI2M2I3NTdkYzA3
NGMwNjRhMTE0NDMyMzEwNmQxNGFkNjViMmNkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxv
YWRDdXJsLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51
cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKHN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgQlN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZUJTVFIoc3VnZ2VzdGVkRmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
c3VnZ2VzdGVkRmlsZW5hbWUubGVuZ3RoKCkpOworICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lQlNUUihzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
QlNUUik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHAKaW5kZXggNGEwM2I3OGJhODA0YmQ4MmY3NmM1OWMyYWI2NTFkZDllOTU3MmQ5MC4uMTMy
YWQ5Mzg3ZjA2YmY0NjIxNGZjZmZiZWIwZjJhOGUyZGIxOTEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
YkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBzdGF0
aWMgYm9vbCBpc0VxdWFsKExQQ1dTVFIgczEsIExQQ1dTVFIgczIpCiBzdGF0aWMgSFJFU1VMVCBj
b252ZXJ0U3RyaW5nVG9WYXJpYW50KFZBUklBTlQqIHBWYXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIFZfVlQocFZhcikgPSBWVF9CU1RSOwotICAgIFZfQlNUUihwVmFyKSA9IFN5c0Fs
bG9jU3RyaW5nTGVuKHN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3Ro
KCkpOworICAgIFZfQlNUUihwVmFyKSA9IEJTdHJpbmcoc3RyaW5nKS5yZWxlYXNlKCk7CiAgICAg
aWYgKHN0cmluZy5sZW5ndGgoKSAmJiAhVl9CU1RSKHBWYXIpKQogICAgICAgICByZXR1cm4gRV9P
VVRPRk1FTU9SWTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMzMWZmMDAwOWMxM2EzYzY3
YjVmNzRhZjBiNzVlMjA3MWZkMTBhMzYuLjgwYzYzYTZiY2VmYTM0Y2M2ZTEwZGIyNWZlZGRhZmM5
ZGNiYmQwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhS
RVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiog
bGFiZWxzLCB1bnNpZ25lZCBjTGFiCiAgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3ZlOwogICAg
IFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChs
YWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJc0luQ2Vs
bEFib3ZlKTsKICAgICAKLSAgICAqcmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFiZWwuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKSwgbGFiZWwubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBCU3Ry
aW5nKGxhYmVsKS5yZWxlYXNlKCk7CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICYmICEqcmVzdWx0
KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICBpZiAob3V0UmVzdWx0RGlzdGFu
Y2UpCkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjptYXRjaExhYmVsc0Fn
YWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElETwogCiAgICAg
U3RyaW5nIGxhYmVsID0gY29yZUZyYW1lLT5tYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGxhYmVs
U3RyaW5ncywgY29yZUVsZW1lbnQpOwogICAgIAotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmlu
Z0xlbihsYWJlbC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CisgICAg
KnJlc3VsdCA9IEJTdHJpbmcobGFiZWwpLnJlbGVhc2UoKTsKICAgICBpZiAobGFiZWwubGVuZ3Ro
KCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAyOGFmNmNiZDFkOTA0ZWI4NDYy
ZWZkNGRmNTdkNzZiYTNkMTlmMTc0Li4wOGE5MWRkOWYzZDkzOGI4M2E5NGU0NWU2MTU2YTY2ZDA1
YzJmN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNTY1LDggKzU2NSw2IEBAIENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+IFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpIGNvCiAKIHZvaWQgV2ViSGlzdG9yeTo6YWRkVmlzaXRlZExpbmtz
VG9QYWdlR3JvdXAoUGFnZUdyb3VwJiBncm91cCkKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2Vu
dHJpZXNCeVVSTC5iZWdpbigpOyBpdCAhPSBtX2VudHJpZXNCeVVSTC5lbmQoKTsgKytpdCkgewot
ICAgICAgICBjb25zdCBTdHJpbmcmIHVybCA9IGl0LT5rZXk7Ci0gICAgICAgIGdyb3VwLmFkZFZp
c2l0ZWRMaW5rKHVybC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwotICAg
IH0KKyAgICBmb3IgKGF1dG8mIHVybCA9IG1fZW50cmllc0J5VVJMLmtleXMoKSkKKyAgICAgICAg
Z3JvdXAuYWRkVmlzaXRlZExpbmsodmlzaXRlZExpbmtIYXNoKHVybCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0R3JhcGhpY3MuY3BwCmluZGV4IDE2MDlhNTA1OTY1ZjA1OTc2NmQxZDM1MGRkNjY3
OTE2NjI3OTdlMmQuLjBhYWI5MThjZGJiODg1NTI2YmYyNTg1Mjg5YTM1ZTkwYTAyYWUzZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB1bnNp
Z25lZCBDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgoTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBjb25zdCBXZWJGb250RGVzYwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyOwogCiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZ1RydW5jYXRvcjo6
Y2VudGVyVHJ1bmNhdGUoU3RyaW5nKHRleHQsIGxlbmd0aCksIHdpZHRoLCBtYWtlRm9udChkZXNj
cmlwdGlvbiksIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7Ci0gICAgbWVt
Y3B5KGJ1ZmZlciwgcmVzdWx0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOworICAgIFN0cmluZ1ZpZXcocmVzdWx0KS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGJ1ZmZlcltyZXN1bHQubGVuZ3RoKCldID0gJ1ww
JzsKICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCgpOwogfQpAQCAtMTI5LDcgKzEyOSw3IEBAIHVu
c2lnbmVkIFJpZ2h0VHJ1bmNhdGVTdHJpbmdUb1dpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0
aCwgY29uc3QgV2ViRm9udERlc2NyCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nVHJ1bmNhdG9y
OjpyaWdodFRydW5jYXRlKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3aWR0aCwgbWFrZUZvbnQoZGVz
Y3JpcHRpb24pLCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwotICAgIG1l
bWNweShidWZmZXIsIHJlc3VsdC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCByZXN1bHQubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBTdHJpbmdWaWV3KHJlc3VsdCkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBidWZmZXJbcmVzdWx0Lmxlbmd0aCgpXSA9ICdc
MCc7CiAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGgoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5k
ZXggOWY2YmIxZjEzODVmZjU1ZjA4ZjFhZWI5MDhhZWQ5YWQwY2NmYmNiNC4uNjA0NTgzYmQ2MjI3
OGM4ZDFkMTRjMmRjYzFlNDFiNjRjY2YzZDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMx
NzgsNyArMzE3OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0QXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogYXBwbGljYXRpb25OYW1lKQogewotICAgICphcHBsaWNhdGlvbk5hbWUgPSBTeXNB
bGxvY1N0cmluZ0xlbihtX2FwcGxpY2F0aW9uTmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBt
X2FwcGxpY2F0aW9uTmFtZS5sZW5ndGgoKSk7CisgICAgKmFwcGxpY2F0aW9uTmFtZSA9IEJTdHJp
bmcobV9hcHBsaWNhdGlvbk5hbWUpLnJlbGVhc2UoKTsKICAgICBpZiAoISphcHBsaWNhdGlvbk5h
bWUgJiYgbV9hcHBsaWNhdGlvbk5hbWUubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9G
TUVNT1JZOwogICAgIHJldHVybiBTX09LOwpAQCAtMzE5OCw3ICszMTk4LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXN0b21Vc2VyQWdlbnQoCiAgICAgKnVzZXJBZ2Vu
dFN0cmluZyA9IDA7CiAgICAgaWYgKCFtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJl
dHVybiBTX09LOwotICAgICp1c2VyQWdlbnRTdHJpbmcgPSBTeXNBbGxvY1N0cmluZ0xlbihtX3Vz
ZXJBZ2VudEN1c3RvbS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtX3VzZXJBZ2VudEN1c3RvbS5s
ZW5ndGgoKSk7CisgICAgKnVzZXJBZ2VudFN0cmluZyA9IEJTdHJpbmcobV91c2VyQWdlbnRDdXN0
b20pLnJlbGVhc2UoKTsKICAgICBpZiAoISp1c2VyQWdlbnRTdHJpbmcgJiYgbV91c2VyQWdlbnRD
dXN0b20ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVy
biBTX09LOwpAQCAtMzY0Niw3ICszNjQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojpncm91cE5hbWUoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBTX09L
OwogICAgIFN0cmluZyBncm91cE5hbWVTdHJpbmcgPSBtX3BhZ2UtPmdyb3VwTmFtZSgpOwotICAg
ICpncm91cE5hbWUgPSBTeXNBbGxvY1N0cmluZ0xlbihncm91cE5hbWVTdHJpbmcuZGVwcmVjYXRl
ZENoYXJhY3RlcnMoKSwgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAqZ3JvdXBOYW1l
ID0gQlN0cmluZyhncm91cE5hbWVTdHJpbmcpLnJlbGVhc2UoKTsKICAgICBpZiAoISpncm91cE5h
bWUgJiYgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1F
TU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTM3NTYsNyArMzc1Niw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRUZXh0KAogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgU3RyaW5nIGZyYW1lU2VsZWN0ZWRUZXh0ID0gZm9jdXNlZEZyYW1lLT5lZGl0
b3IoKS5zZWxlY3RlZFRleHQoKTsKLSAgICAqdGV4dCA9IFN5c0FsbG9jU3RyaW5nTGVuKGZyYW1l
U2VsZWN0ZWRUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGZyYW1lU2VsZWN0ZWRUZXh0Lmxl
bmd0aCgpKTsKKyAgICAqdGV4dCA9IEJTdHJpbmcoZnJhbWVTZWxlY3RlZFRleHQpLnJlbGVhc2Uo
KTsKICAgICBpZiAoISp0ZXh0ICYmIGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTU4MjcsNyArNTgy
Nyw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252ZXJ0U3RyaW5nKEZyYW1l
KiB0YXJnZXRGcmFtZSwgUkVDT05WRVJUU1RSSU5HCiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0
ckxlbiA9IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1RhcmdldFN0ckxl
biA9IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0ck9mZnNldCA9IHNp
emVvZihSRUNPTlZFUlRTVFJJTkcpOwotICAgIG1lbWNweShyZWNvbnZlcnRTdHJpbmcgKyAxLCB0
ZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
KTsKKyAgICBTdHJpbmdWaWV3KHRleHQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50
ZXJwcmV0X2Nhc3Q8VUNoYXIqPihyZWNvbnZlcnRTdHJpbmcgKyAxKSk7CiAgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226847</attachid>
            <date>2014-03-16 11:37:27 -0700</date>
            <delta_ts>2014-03-16 12:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130305-20140316113712.patch</filename>
            <type>text/plain</type>
            <size>25550</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmY0ZTk4NjY1
ZDIxMWIyZmVlYTEyOThmNmU0NzJiNDY2Mjg5ZTg0Yy4uN2Y3ZTM4ZWFlMDhmNTJhOWY0NjUyNGJi
YWE1NDY3ODQ1ZDU3ZWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTAzLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
YWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIHVzZSBmcm9tIFdlYktpdCBkaXJlY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXpl
cjo6YXBwZW5kU3RyaW5nT2JqZWN0KTogVXNlIG9wZXJhdG9yW10KKyAgICAgICAgaW5zdGVhZCBv
ZiBkZXByZWNhdGVkQ2hhcmFjdGVycy4KKwogMjAxNC0wMy0xNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgcHJvZHVjdGlvbiBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAwNTFiZjEyMDU3YWY5NDQyY2U5NDc0Y2EyZTY3ZGU4NTY1NzM5MTI5Li4yNDhm
Njg3YTBiNDVmZTg5NzcxZjE5NmUwZDBkYzJjM2E4YmEwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgdXNlIGZyb20gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFj
Y2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X3RleHQp
OiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVuLAorICAgICAgICB3aGlj
aCBoYW5kbGVzIFN0cmluZyBkaXJlY3RseS4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRf
dGV4dEJlZm9yZU9mZnNldCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRfdGV4
dEF0T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X2F0dHJpYnV0
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBE
T01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoRE9N
RWxlbWVudDo6Zm9udCk6IFJld29yayB0aGlzIHRvIGxlYWsgYSBzdHJpbmcsIHNpbmNlIGl0IHJl
dHVybnMgYQorICAgICAgICBwb2ludGVyIHRvIGEgZm9udCBmYW1pbHkgbmFtZSdzIGNoYXJhY3Rl
cnMgd2l0aCBubyBkZWZpbmVkIGxpZmV0aW1lLgorCisgICAgICAgICogRE9NSFRNTENsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dCk6IFVzZSBCU3RyaW5nJ3Mg
U3RyaW5nLWJhc2VkIGNvbnN0cnVjdG9yLAorICAgICAgICBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkg
cGFzc2luZyBhIGNoYXJhY3RlciBwb2ludGVyLgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50
OjphY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKTog
RGl0dG8uCisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSk6IERpdHRvLgorICAg
ICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUpOiBEaXR0by4KKworICAgICAgICAq
IE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBh
dGhTdHJpbmdUb0ZpbGVDRlVSTFJlZik6IFVzZSBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OnVw
Y29udmVydGVkQ2hhcmFjdGVycy4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6dW5yZWFjaGFibGVVUkwpOiBVc2UgQlN0cmluZydzIFN0cmlu
Zy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHBhc3Np
bmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKworICAgICAgICAqIFdlYkRvd25sb2FkLmNwcDoKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCk6IFVzZSBCU3RyaW5n
IGluc3RlYWQgb2YgU3lzQWxsb2NTdHJpbmdMZW4uCisKKyAgICAgICAgKiBXZWJEb3dubG9hZENG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRGaW5pc2gpOiBVc2UgQlN0cmluZydz
IFN0cmluZy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5
IHBhc3NpbmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwu
Y3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKGNvbnZlcnRT
dHJpbmdUb1ZhcmlhbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVu
LgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZTo6bWF0Y2hMYWJl
bHNBZ2FpbnN0RWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJIaXN0b3J5OjphZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cCk6IFVzZSBhIGJl
dHRlciBsb29wIGFuZCBjYWxsCisgICAgICAgIHZpc2l0ZWRMaW5rSGFzaCwgc2luY2UgaXQgY2Fu
IHRha2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAg
IChDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgpOiBVc2UgU3RyaW5nVmlldzo6Z2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQuCisgICAgICAgIChSaWdodFRydW5jYXRlU3RyaW5nVG9XaWR0aCk6
IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9j
U3RyaW5nTGVuLgorICAgICAgICAoV2ViVmlldzo6Y3VzdG9tVXNlckFnZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJWaWV3Ojpncm91cE5hbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYlZpZXc6OnNl
bGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252
ZXJ0U3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0Lgor
CiAyMDE0LTAzLTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNv
cHlyaWdodCBoZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jp
bmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKaW5kZXggOTMwOTgyNWYzMmM0ODFkZWQ1ZjhjY2I2NzdjODQ5YmYxYTY0
YmRmMy4uYTBiYjdhM2M1OGYyYmUwN2IxY2UwNmNiYjgxOTk3ZmU4ZDM3YjhhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtNjkx
LDI3ICs2OTEsMjUgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVyOjphcHBlbmRJ
bnRlZ2VyKHNpemVfdCBpbnRlZ2VyKQogdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVy
OjphcHBlbmRTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc3RhcnRP
YmplY3QoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5kZXByZWNhdGVk
Q2hhcmFjdGVycygpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAg
ICBpZiAoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsKKyAgICBp
ZiAoc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKICAgICAgICAgaWYgKGxlbmd0aCA8PSBt
YXhMZW5ndGhJbk1hcmtlckJ5dGUpCiAgICAgICAgICAgICBhcHBlbmRCeXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGFzY2lpU3RyaW5nTWFya2VyQnl0ZSB8IGxlbmd0aCkpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGFwcGVuZEJ5dGUoYXNjaWlTdHJpbmdXaXRoU2VwYXJhdGVM
ZW5ndGhNYXJrZXJCeXRlKTsKLSAgICAgICAgICAgIGFwcGVuZEludGVnZXIobGVuZ3RoKTsKKyAg
ICAgICAgICAgIGFwcGVuZEludGVnZXIoc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgfQotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBh
cHBlbmRCeXRlKGNoYXJhY3RlcnNbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBhcHBlbmRCeXRlKHN0cmluZ1tp
XSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGxlbmd0aCA8PSBtYXhMZW5ndGhJbk1hcmtl
ckJ5dGUpCi0gICAgICAgICAgICBhcHBlbmRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHVuaWNvZGVTdHJpbmdNYXJrZXJCeXRlIHwgbGVuZ3RoKSk7CisgICAgICAgIGlmIChzdHJpbmcu
bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoSW5NYXJrZXJCeXRlKQorICAgICAgICAgICAgYXBwZW5kQnl0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1bmljb2RlU3RyaW5nTWFya2VyQnl0ZSB8IHN0
cmluZy5sZW5ndGgoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFwcGVuZEJ5dGUo
dW5pY29kZVN0cmluZ1dpdGhTZXBhcmF0ZUxlbmd0aE1hcmtlckJ5dGUpOwotICAgICAgICAgICAg
YXBwZW5kSW50ZWdlcihsZW5ndGgpOworICAgICAgICAgICAgYXBwZW5kSW50ZWdlcihzdHJpbmcu
bGVuZ3RoKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0ZXJzW2ldID4+IDgp
OwotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBh
cHBlbmRCeXRlKHN0cmluZ1tpXSA+PiA4KTsKKyAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5n
W2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0FjY2Vzc2libGVUZXh0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlVGV4
dEltcGwuY3BwCmluZGV4IDJlZGMzNjZkYWZkZWNkMDJkZDEwZmYyNzJhMTc1NTQ2OTE4Y2ZmMDUu
LjBkNzBiNWMzYWI4MDZkMTM4NzdmN2MxZTFhNmRmMzg4MWU2ZTA1NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIEhSRVNVTFQg
QWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0KGxvbmcgc3RhcnRPZmZzZXQsIGxvbmcgZW5kT2Zmc2V0
LCBCU1RSKiB0ZXh0KQogICAgIGVuZE9mZnNldCA9IGNvbnZlcnRTcGVjaWFsT2Zmc2V0KGVuZE9m
ZnNldCk7CiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT5zdHJpbmdW
YWx1ZSgpLnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQpOwog
Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmlu
ZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3Ro
KCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApAQCAtMjU2LDcg
KzI1Niw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QmVmb3JlT2Zmc2V0KGxv
bmcgb2Zmc2V0LCBlbnVtIElBMlRleHRCb3VuZGFyeVR5CiAgICAgICAgIHJldHVybiBTX0ZBTFNF
OwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vi
c3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRl
eHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJp
bmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAh
KnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpAQCAtMzI0LDcgKzMyNCw3IEBA
IEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QWZ0ZXJPZmZzZXQobG9uZyBvZmZzZXQs
IGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwCiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAg
V1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpz
dGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNB
bGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0
cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5y
ZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAg
ICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApAQCAtMzg0LDcgKzM4NCw3IEBAIEhSRVNVTFQg
QWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QXRPZmZzZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4
dEJvdW5kYXJ5VHlwZSBiCiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJp
bmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNl
dCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmlu
Z0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQu
bGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7
CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwpAQCAtNjc0LDcgKzY3NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJs
ZVRleHQ6OnNldEF0dHJpYnV0ZXMobG9uZyBzdGFydE9mZnNldCwgbG9uZyBlbmRPZmZzZXQsIEJT
VFIqIGF0CiBIUkVTVUxUIEFjY2Vzc2libGVUZXh0OjpnZXRfYXR0cmlidXRlcyhCU1RSKiBhdHRy
aWJ1dGVzKQogewogICAgIFdURjo6U3RyaW5nIHRleHQoInRleHQtbW9kZWw6YTEiKTsKLSAgICAq
YXR0cmlidXRlcyA9IFN5c0FsbG9jU3RyaW5nTGVuKHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgKmF0dHJpYnV0ZXMgPSBCU3RyaW5nKHRleHQpLnJlbGVh
c2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNw
cAppbmRleCA4YTU3ODBjNDdkOTI0MTUxN2FmMWU4NTQzNmNmZjAwY2Y0NWY4OTQzLi5kMTMxMWNm
NGI5ZDk5MjJkZjI0MzJjOTY0MWI1ZDQxMjBlZGI3Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1ND
bGFzc2VzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2lu
Y2x1ZGUgIkRPTUNTU0NsYXNzZXMuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvLyBET01DU1NTdHlsZURlY2xhcmF0
aW9uIC0gRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0xMDIsNyArMTAzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKAogewogICAgIFdURjo6U3RyaW5nIHByb3Bl
cnR5TmFtZVN0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgIFdURjo6U3RyaW5nIHZhbHVlID0gbV9z
dHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWVTdHJpbmcpOwotICAgICpyZXN1bHQg
PSBTeXNBbGxvY1N0cmluZ0xlbih2YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB2YWx1ZS5s
ZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWUpLnJlbGVhc2UoKTsKICAgICBp
ZiAodmFsdWUubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVN
T1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9N
Q29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmlu
ZGV4IGVjYWYyOWEyODI3MDdlOTdiNDM3YWRjNTc2MGNjZjlmOGEzYTU0MjAuLjhiOWQ1MmVjMGQ5
MGNlOGNmM2VlODFkNDFmMmZhM2VlYjJlYjhjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xh
c3Nlcy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TU5vZGU6Om5vZGVWYWx1ZSgKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKICAgICBXVEY6OlN0cmluZyBub2RlVmFsdWVTdHIgPSBtX25vZGUtPm5vZGVWYWx1ZSgpOwot
ICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbihub2RlVmFsdWVTdHIuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgbm9kZVZhbHVlU3RyLmxlbmd0aCgpKTsKKyAgICAqcmVzdWx0ID0gQlN0cmlu
Zyhub2RlVmFsdWVTdHIpLnJlbGVhc2UoKTsKICAgICBpZiAobm9kZVZhbHVlU3RyLmxlbmd0aCgp
ICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4g
U19PSzsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
RWxlbWVudDo6Z2V0QXR0cmlidXRlKAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdURjo6
U3RyaW5nIG5hbWVTdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKTsKICAgICBXVEY6OlN0
cmluZyYgYXR0clZhbHVlU3RyaW5nID0gKFdURjo6U3RyaW5nJikgbV9lbGVtZW50LT5nZXRBdHRy
aWJ1dGUobmFtZVN0cmluZyk7Ci0gICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nTGVuKGF0dHJW
YWx1ZVN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBhdHRyVmFsdWVTdHJpbmcubGVuZ3Ro
KCkpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGF0dHJWYWx1ZVN0cmluZykucmVsZWFzZSgpOwog
ICAgIGlmIChhdHRyVmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI1Nyw3ICsxMjU3LDEy
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Zm9udChXZWJGb250RGVz
Y3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvCiAKICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gcmVuZGVyZXItPnN0eWxlKCkuZm9udCgpLmZvbnREZXNjcmlwdGlvbigpOwog
ICAgIEF0b21pY1N0cmluZyBmYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsK
LSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseS5zdHJpbmcoKS5kZXByZWNh
dGVkQ2hhcmFjdGVycygpOworCisgICAgLy8gRklYTUU6IFRoaXMgbGVha3MuIERlbGV0ZSB0aGlz
IHdob2xlIGZ1bmN0aW9uIHRvIGdldCByaWQgb2YgdGhlIGxlYWsuCisgICAgVUNoYXIqIGZhbWls
eUNoYXJhY3RlcnNCdWZmZXIgPSBuZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKKyAgICBTdHJp
bmdWaWV3KGZhbWlseS5zdHJpbmcoKSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5
Q2hhcmFjdGVyc0J1ZmZlcik7CisKKyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZh
bWlseUNoYXJhY3RlcnNCdWZmZXI7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5n
dGggPSBmYW1pbHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9s
ZCA9IGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBXZWJDb3JlOjpGb250V2VpZ2h0NjAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IGEyZjA4MmMxMTNjZjc4M2I3ODA2
ZDA1OWMyOWM1ZTMxYzU3NzJhZDguLmIzOGM3N2E2ZTZmNjMzMDM1YTZkNTkzMGQ5YjcxODIwNzZh
MDk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQ4Myw3ICs0ODMs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQo
CiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7
CiAgICAgV1RGOjpTdHJpbmcgaW5uZXJUZXh0U3RyaW5nID0gdG9IVE1MRWxlbWVudChtX2VsZW1l
bnQpLT5pbm5lclRleHQoKTsKLSAgICAqcmVzdWx0ID0gQlN0cmluZyhpbm5lclRleHRTdHJpbmcu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgaW5uZXJUZXh0U3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNl
KCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoaW5uZXJUZXh0U3RyaW5nKS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIApAQCAtNTYxLDcgKzU2MSw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjphY3Rpb24oCiB7CiAgICAgQVNT
RVJUKG1fZWxlbWVudCAmJiBpc0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKICAgICBXVEY6
OlN0cmluZyBhY3Rpb25TdHJpbmcgPSB0b0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpLT5hY3Rp
b24oKTsKLSAgICAqcmVzdWx0ID0gQlN0cmluZyhhY3Rpb25TdHJpbmcuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSwgYWN0aW9uU3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9
IEJTdHJpbmcoYWN0aW9uU3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
ICAgCkBAIC01OTEsNyArNTkxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1M
Rm9ybUVsZW1lbnQ6Om1ldGhvZCgKIHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTEZv
cm1FbGVtZW50KG1fZWxlbWVudCkpOwogICAgIFdURjo6U3RyaW5nIG1ldGhvZFN0cmluZyA9IHRv
SFRNTEZvcm1FbGVtZW50KG1fZWxlbWVudCktPm1ldGhvZCgpOwotICAgICpyZXN1bHQgPSBCU3Ry
aW5nKG1ldGhvZFN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtZXRob2RTdHJpbmcubGVu
Z3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTEyMTAsNyArMTIxMCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dmFsdWUoCiAg
ICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CiAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KG1f
ZWxlbWVudCk7CiAgICAgV1RGOjpTdHJpbmcgdmFsdWVTdHJpbmcgPSBpbnB1dEVsZW1lbnQtPnZh
bHVlKCk7Ci0gICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVTdHJpbmcuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSwgdmFsdWVTdHJpbmcubGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0g
QlN0cmluZyh2YWx1ZVN0cmluZykucmVsZWFzZSgpOwogICAgIGlmICh2YWx1ZVN0cmluZy5sZW5n
dGgoKSAmJiAhKnJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0
dXJuIFNfT0s7CkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKAogICAgIEFTU0VSVChtX2VsZW1lbnQgJiYg
aXNIVE1MVGV4dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOwogICAgIEhUTUxUZXh0QXJlYUVsZW1l
bnQqIHRleHRhcmVhRWxlbWVudCA9IHRvSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpOwog
ICAgIFdURjo6U3RyaW5nIHZhbHVlU3RyaW5nID0gdGV4dGFyZWFFbGVtZW50LT52YWx1ZSgpOwot
ICAgICpyZXN1bHQgPSBCU3RyaW5nKHZhbHVlU3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCks
IHZhbHVlU3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmco
dmFsdWVTdHJpbmcpLnJlbGVhc2UoKTsKICAgICBpZiAodmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYg
ISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggZTUyMzczMTFj
Y2U3NjE2MzkyYjZhMjQ3MTY0OTIyZjRjODk0NDI3OS4uMzMyMDAxMThhMWJkNTA1ZGMzOTA3Mzdk
YjJiZjYwYmFmN2JkMWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMu
Y3BwCkBAIC01MSwxMCArNTEsNyBAQCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RS
KGNvbnN0IFVSTCYgdXJsKQogCiBDRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJp
bmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBDRlN0cmluZ1Jl
ZiBjZlBhdGggPSBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIChjb25zdCBV
bmlDaGFyKilzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBr
Q0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBDRlVSTFJlZiBwYXRoVVJMID0gQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7
Ci0gICAgQ0ZSZWxlYXNlKGNmUGF0aCk7Ci0gICAgcmV0dXJuIHBhdGhVUkw7CisgICAgcmV0dXJu
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7CiB9CiAKIFN0cmluZyBNYXJz
aGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKaW5kZXggM2E0NDQ5MWE1MDRjZjk2NWRjM2Q0OWEwZTdjYWNiNWY5YTI3MmUwNS4u
MzFiYmMwNjIwZWEwMTk4MGI3ZjlmNGNhMTEzNTBhOTJlMjUxYjE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02
NjgsNyArNjY4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmlu
ZyhTdHJpbmdWaWV3IHRleHQsIGludCogbWlzc3BlbGxpbmdMb2MKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7Ci0gICAgZWQtPmNoZWNr
U3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudG9TdHJpbmdXaXRob3V0Q29weWluZygp
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRp
b24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1f
d2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlz
c3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRp
dG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25z
dCBTdHJpbmcmIGlucHV0V29yZCkKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1h
ckRldGFpbAogCiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAg
Q09NUHRyPElFbnVtV2ViR3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChG
QUlMRUQoZWQtPmNoZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgJmVu
dW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1tYXJMZW5ndGgpKSkKKyAg
ICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFk
R3JhbW1hckxvY2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDVk
ZDJiYmQ3ZWYyNTMzNzkzZTlhYjJhOGE2NmI4NmQ1ZTg3ZTcwMWEuLjhmZWU4ZWI0MGU2NDRiMTZk
MWU4MTU2ODYyYTdjOGI4MjJkZTg1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CkBAIC0yNTUsNyArMjU1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291
cmNlOjp1bnJlYWNoYWJsZVVSTCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkK
IHsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
LSAgICBCU3RyaW5nIHVybFN0cmluZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCku
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkp
OworICAgIEJTdHJpbmcgdXJsU3RyaW5nKHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKIAogICAg
ICp1cmwgPSB1cmxTdHJpbmcucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWQuY3BwCmluZGV4IGVjMDYzNGJmMGM5ODJmNjE1ODU2NjNlYTA3MThkYzA5OGMz
NTYxMTUuLmQ4MjBjZjU5MDczYzRjNDU5MmRlODZmNjQ0NmQ3N2E4NGIzMzI3ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCgKICAgICAgICAg
YnVuZGxlLnRydW5jYXRlKDEpOwogCiAgICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6
ZmlsZUV4dGVuc2lvbigpKTsKLSAgICAqYnVuZGxlUGF0aCA9IFN5c0FsbG9jU3RyaW5nTGVuKGJ1
bmRsZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBidW5kbGUubGVuZ3RoKCkpOworICAgICpidW5k
bGVQYXRoID0gQlN0cmluZyhidW5kbGUpLnJlbGVhc2UoKTsKICAgICBpZiAoISpidW5kbGVQYXRo
KQogICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDBmNmZlZWY4YjkxNzlhODkyNGM5MzQxYTNkZWYx
ZTFlMTEwZDI0ZTEuLjVkZmJhMjkzOWFmY2E5OTU5YTRiZTA1ZjFlMzgzNTU3M2U4ZDFjMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAg
dm9pZCBXZWJEb3dubG9hZDo6ZGlkRmluaXNoKCkKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVw
b3J0QnVuZGxlUGF0aEFzRmluYWxQYXRoID0gdHJ1ZTsKIAotICAgICAgICBCU3RyaW5nIGRlc3Rp
bmF0aW9uQlNUUihtX2Rlc3RpbmF0aW9uLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIG1fZGVzdGlu
YXRpb24ubGVuZ3RoKCkpOworICAgICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3Rp
bmF0aW9uKTsKICAgICAgICAgaWYgKEZBSUxFRChtX2RlbGVnYXRlLT5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSh0aGlzLCBkZXN0aW5hdGlvbkJTVFIpKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKCkgZmFpbGVkIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmlu
ZGV4IGFmZmVhNjc3MDdlMWQ3ZDM1Y2Q3N2Y4NWNmNTk4MzY0ODhmN2I4MDYuLjI2M2I3NTdkYzA3
NGMwNjRhMTE0NDMyMzEwNmQxNGFkNjViMmNkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxv
YWRDdXJsLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51
cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKHN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgQlN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZUJTVFIoc3VnZ2VzdGVkRmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
c3VnZ2VzdGVkRmlsZW5hbWUubGVuZ3RoKCkpOworICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lQlNUUihzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
QlNUUik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHAKaW5kZXggNGEwM2I3OGJhODA0YmQ4MmY3NmM1OWMyYWI2NTFkZDllOTU3MmQ5MC4uMTMy
YWQ5Mzg3ZjA2YmY0NjIxNGZjZmZiZWIwZjJhOGUyZGIxOTEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
YkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBzdGF0
aWMgYm9vbCBpc0VxdWFsKExQQ1dTVFIgczEsIExQQ1dTVFIgczIpCiBzdGF0aWMgSFJFU1VMVCBj
b252ZXJ0U3RyaW5nVG9WYXJpYW50KFZBUklBTlQqIHBWYXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIFZfVlQocFZhcikgPSBWVF9CU1RSOwotICAgIFZfQlNUUihwVmFyKSA9IFN5c0Fs
bG9jU3RyaW5nTGVuKHN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3Ro
KCkpOworICAgIFZfQlNUUihwVmFyKSA9IEJTdHJpbmcoc3RyaW5nKS5yZWxlYXNlKCk7CiAgICAg
aWYgKHN0cmluZy5sZW5ndGgoKSAmJiAhVl9CU1RSKHBWYXIpKQogICAgICAgICByZXR1cm4gRV9P
VVRPRk1FTU9SWTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMzMWZmMDAwOWMxM2EzYzY3
YjVmNzRhZjBiNzVlMjA3MWZkMTBhMzYuLjgwYzYzYTZiY2VmYTM0Y2M2ZTEwZGIyNWZlZGRhZmM5
ZGNiYmQwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhS
RVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiog
bGFiZWxzLCB1bnNpZ25lZCBjTGFiCiAgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3ZlOwogICAg
IFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChs
YWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJc0luQ2Vs
bEFib3ZlKTsKICAgICAKLSAgICAqcmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFiZWwuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKSwgbGFiZWwubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBCU3Ry
aW5nKGxhYmVsKS5yZWxlYXNlKCk7CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICYmICEqcmVzdWx0
KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICBpZiAob3V0UmVzdWx0RGlzdGFu
Y2UpCkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjptYXRjaExhYmVsc0Fn
YWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElETwogCiAgICAg
U3RyaW5nIGxhYmVsID0gY29yZUZyYW1lLT5tYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGxhYmVs
U3RyaW5ncywgY29yZUVsZW1lbnQpOwogICAgIAotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmlu
Z0xlbihsYWJlbC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CisgICAg
KnJlc3VsdCA9IEJTdHJpbmcobGFiZWwpLnJlbGVhc2UoKTsKICAgICBpZiAobGFiZWwubGVuZ3Ro
KCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAyOGFmNmNiZDFkOTA0ZWI4NDYy
ZWZkNGRmNTdkNzZiYTNkMTlmMTc0Li5kNjVhMDdlMjY1MmNmNGNjNDk2ZWFkNjAxNzg0Y2VlMThm
OTRiMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNTY1LDggKzU2NSw2IEBAIENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+IFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpIGNvCiAKIHZvaWQgV2ViSGlzdG9yeTo6YWRkVmlzaXRlZExpbmtz
VG9QYWdlR3JvdXAoUGFnZUdyb3VwJiBncm91cCkKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2Vu
dHJpZXNCeVVSTC5iZWdpbigpOyBpdCAhPSBtX2VudHJpZXNCeVVSTC5lbmQoKTsgKytpdCkgewot
ICAgICAgICBjb25zdCBTdHJpbmcmIHVybCA9IGl0LT5rZXk7Ci0gICAgICAgIGdyb3VwLmFkZFZp
c2l0ZWRMaW5rKHVybC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwotICAg
IH0KKyAgICBmb3IgKGF1dG8mIHVybCA6IG1fZW50cmllc0J5VVJMLmtleXMoKSkKKyAgICAgICAg
Z3JvdXAuYWRkVmlzaXRlZExpbmsodmlzaXRlZExpbmtIYXNoKHVybCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0R3JhcGhpY3MuY3BwCmluZGV4IDE2MDlhNTA1OTY1ZjA1OTc2NmQxZDM1MGRkNjY3
OTE2NjI3OTdlMmQuLjBhYWI5MThjZGJiODg1NTI2YmYyNTg1Mjg5YTM1ZTkwYTAyYWUzZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB1bnNp
Z25lZCBDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgoTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3Ro
LCBjb25zdCBXZWJGb250RGVzYwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyOwogCiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZ1RydW5jYXRvcjo6
Y2VudGVyVHJ1bmNhdGUoU3RyaW5nKHRleHQsIGxlbmd0aCksIHdpZHRoLCBtYWtlRm9udChkZXNj
cmlwdGlvbiksIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7Ci0gICAgbWVt
Y3B5KGJ1ZmZlciwgcmVzdWx0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOworICAgIFN0cmluZ1ZpZXcocmVzdWx0KS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGJ1ZmZlcltyZXN1bHQubGVuZ3RoKCldID0gJ1ww
JzsKICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCgpOwogfQpAQCAtMTI5LDcgKzEyOSw3IEBAIHVu
c2lnbmVkIFJpZ2h0VHJ1bmNhdGVTdHJpbmdUb1dpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0
aCwgY29uc3QgV2ViRm9udERlc2NyCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENh
Y2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nVHJ1bmNhdG9y
OjpyaWdodFRydW5jYXRlKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3aWR0aCwgbWFrZUZvbnQoZGVz
Y3JpcHRpb24pLCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwotICAgIG1l
bWNweShidWZmZXIsIHJlc3VsdC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCByZXN1bHQubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBTdHJpbmdWaWV3KHJlc3VsdCkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBidWZmZXJbcmVzdWx0Lmxlbmd0aCgpXSA9ICdc
MCc7CiAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGgoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5k
ZXggOWY2YmIxZjEzODVmZjU1ZjA4ZjFhZWI5MDhhZWQ5YWQwY2NmYmNiNC4uNjA0NTgzYmQ2MjI3
OGM4ZDFkMTRjMmRjYzFlNDFiNjRjY2YzZDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMx
NzgsNyArMzE3OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0QXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogYXBwbGljYXRpb25OYW1lKQogewotICAgICphcHBsaWNhdGlvbk5hbWUgPSBTeXNB
bGxvY1N0cmluZ0xlbihtX2FwcGxpY2F0aW9uTmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBt
X2FwcGxpY2F0aW9uTmFtZS5sZW5ndGgoKSk7CisgICAgKmFwcGxpY2F0aW9uTmFtZSA9IEJTdHJp
bmcobV9hcHBsaWNhdGlvbk5hbWUpLnJlbGVhc2UoKTsKICAgICBpZiAoISphcHBsaWNhdGlvbk5h
bWUgJiYgbV9hcHBsaWNhdGlvbk5hbWUubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9G
TUVNT1JZOwogICAgIHJldHVybiBTX09LOwpAQCAtMzE5OCw3ICszMTk4LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXN0b21Vc2VyQWdlbnQoCiAgICAgKnVzZXJBZ2Vu
dFN0cmluZyA9IDA7CiAgICAgaWYgKCFtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJl
dHVybiBTX09LOwotICAgICp1c2VyQWdlbnRTdHJpbmcgPSBTeXNBbGxvY1N0cmluZ0xlbihtX3Vz
ZXJBZ2VudEN1c3RvbS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtX3VzZXJBZ2VudEN1c3RvbS5s
ZW5ndGgoKSk7CisgICAgKnVzZXJBZ2VudFN0cmluZyA9IEJTdHJpbmcobV91c2VyQWdlbnRDdXN0
b20pLnJlbGVhc2UoKTsKICAgICBpZiAoISp1c2VyQWdlbnRTdHJpbmcgJiYgbV91c2VyQWdlbnRD
dXN0b20ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVy
biBTX09LOwpAQCAtMzY0Niw3ICszNjQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojpncm91cE5hbWUoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBTX09L
OwogICAgIFN0cmluZyBncm91cE5hbWVTdHJpbmcgPSBtX3BhZ2UtPmdyb3VwTmFtZSgpOwotICAg
ICpncm91cE5hbWUgPSBTeXNBbGxvY1N0cmluZ0xlbihncm91cE5hbWVTdHJpbmcuZGVwcmVjYXRl
ZENoYXJhY3RlcnMoKSwgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAqZ3JvdXBOYW1l
ID0gQlN0cmluZyhncm91cE5hbWVTdHJpbmcpLnJlbGVhc2UoKTsKICAgICBpZiAoISpncm91cE5h
bWUgJiYgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1F
TU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTM3NTYsNyArMzc1Niw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRUZXh0KAogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgU3RyaW5nIGZyYW1lU2VsZWN0ZWRUZXh0ID0gZm9jdXNlZEZyYW1lLT5lZGl0
b3IoKS5zZWxlY3RlZFRleHQoKTsKLSAgICAqdGV4dCA9IFN5c0FsbG9jU3RyaW5nTGVuKGZyYW1l
U2VsZWN0ZWRUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGZyYW1lU2VsZWN0ZWRUZXh0Lmxl
bmd0aCgpKTsKKyAgICAqdGV4dCA9IEJTdHJpbmcoZnJhbWVTZWxlY3RlZFRleHQpLnJlbGVhc2Uo
KTsKICAgICBpZiAoISp0ZXh0ICYmIGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTU4MjcsNyArNTgy
Nyw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252ZXJ0U3RyaW5nKEZyYW1l
KiB0YXJnZXRGcmFtZSwgUkVDT05WRVJUU1RSSU5HCiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0
ckxlbiA9IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1RhcmdldFN0ckxl
biA9IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0ck9mZnNldCA9IHNp
emVvZihSRUNPTlZFUlRTVFJJTkcpOwotICAgIG1lbWNweShyZWNvbnZlcnRTdHJpbmcgKyAxLCB0
ZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
KTsKKyAgICBTdHJpbmdWaWV3KHRleHQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50
ZXJwcmV0X2Nhc3Q8VUNoYXIqPihyZWNvbnZlcnRTdHJpbmcgKyAxKSk7CiAgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226853</attachid>
            <date>2014-03-16 12:48:48 -0700</date>
            <delta_ts>2014-03-16 14:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130305-20140316124828.patch</filename>
            <type>text/plain</type>
            <size>25490</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmY0ZTk4NjY1
ZDIxMWIyZmVlYTEyOThmNmU0NzJiNDY2Mjg5ZTg0Yy4uN2Y3ZTM4ZWFlMDhmNTJhOWY0NjUyNGJi
YWE1NDY3ODQ1ZDU3ZWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTAzLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
YWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIHVzZSBmcm9tIFdlYktpdCBkaXJlY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXpl
cjo6YXBwZW5kU3RyaW5nT2JqZWN0KTogVXNlIG9wZXJhdG9yW10KKyAgICAgICAgaW5zdGVhZCBv
ZiBkZXByZWNhdGVkQ2hhcmFjdGVycy4KKwogMjAxNC0wMy0xNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgcHJvZHVjdGlvbiBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAwNTFiZjEyMDU3YWY5NDQyY2U5NDc0Y2EyZTY3ZGU4NTY1NzM5MTI5Li4yNDhm
Njg3YTBiNDVmZTg5NzcxZjE5NmUwZDBkYzJjM2E4YmEwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgdXNlIGZyb20gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFj
Y2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X3RleHQp
OiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVuLAorICAgICAgICB3aGlj
aCBoYW5kbGVzIFN0cmluZyBkaXJlY3RseS4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRf
dGV4dEJlZm9yZU9mZnNldCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRfdGV4
dEF0T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X2F0dHJpYnV0
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBE
T01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoRE9N
RWxlbWVudDo6Zm9udCk6IFJld29yayB0aGlzIHRvIGxlYWsgYSBzdHJpbmcsIHNpbmNlIGl0IHJl
dHVybnMgYQorICAgICAgICBwb2ludGVyIHRvIGEgZm9udCBmYW1pbHkgbmFtZSdzIGNoYXJhY3Rl
cnMgd2l0aCBubyBkZWZpbmVkIGxpZmV0aW1lLgorCisgICAgICAgICogRE9NSFRNTENsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dCk6IFVzZSBCU3RyaW5nJ3Mg
U3RyaW5nLWJhc2VkIGNvbnN0cnVjdG9yLAorICAgICAgICBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkg
cGFzc2luZyBhIGNoYXJhY3RlciBwb2ludGVyLgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50
OjphY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKTog
RGl0dG8uCisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSk6IERpdHRvLgorICAg
ICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUpOiBEaXR0by4KKworICAgICAgICAq
IE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBh
dGhTdHJpbmdUb0ZpbGVDRlVSTFJlZik6IFVzZSBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OnVw
Y29udmVydGVkQ2hhcmFjdGVycy4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6dW5yZWFjaGFibGVVUkwpOiBVc2UgQlN0cmluZydzIFN0cmlu
Zy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHBhc3Np
bmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKworICAgICAgICAqIFdlYkRvd25sb2FkLmNwcDoKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCk6IFVzZSBCU3RyaW5n
IGluc3RlYWQgb2YgU3lzQWxsb2NTdHJpbmdMZW4uCisKKyAgICAgICAgKiBXZWJEb3dubG9hZENG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRGaW5pc2gpOiBVc2UgQlN0cmluZydz
IFN0cmluZy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5
IHBhc3NpbmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwu
Y3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKGNvbnZlcnRT
dHJpbmdUb1ZhcmlhbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVu
LgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZTo6bWF0Y2hMYWJl
bHNBZ2FpbnN0RWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJIaXN0b3J5OjphZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cCk6IFVzZSBhIGJl
dHRlciBsb29wIGFuZCBjYWxsCisgICAgICAgIHZpc2l0ZWRMaW5rSGFzaCwgc2luY2UgaXQgY2Fu
IHRha2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAg
IChDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgpOiBVc2UgU3RyaW5nVmlldzo6Z2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQuCisgICAgICAgIChSaWdodFRydW5jYXRlU3RyaW5nVG9XaWR0aCk6
IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9j
U3RyaW5nTGVuLgorICAgICAgICAoV2ViVmlldzo6Y3VzdG9tVXNlckFnZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJWaWV3Ojpncm91cE5hbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYlZpZXc6OnNl
bGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252
ZXJ0U3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0Lgor
CiAyMDE0LTAzLTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNv
cHlyaWdodCBoZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jp
bmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKaW5kZXggOTMwOTgyNWYzMmM0ODFkZWQ1ZjhjY2I2NzdjODQ5YmYxYTY0
YmRmMy4uNDk1NGE1NDE5ZGExMzczZGJjOTI2MWJiZjExMzI1MDFlM2JhYmE0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtNjkx
LDkgKzY5MSw4IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kSW50
ZWdlcihzaXplX3QgaW50ZWdlcikKIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6
YXBwZW5kU3RyaW5nT2JqZWN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHN0YXJ0T2Jq
ZWN0KCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAg
aWYgKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgaWYg
KHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7CiAgICAgICAgIGlmIChsZW5ndGggPD0gbWF4
TGVuZ3RoSW5NYXJrZXJCeXRlKQogICAgICAgICAgICAgYXBwZW5kQnl0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihhc2NpaVN0cmluZ01hcmtlckJ5dGUgfCBsZW5ndGgpKTsKICAgICAgICAg
ZWxzZSB7CkBAIC03MDEsNyArNzAwLDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxp
emVyOjphcHBlbmRTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgICAg
ICBhcHBlbmRJbnRlZ2VyKGxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0
ZXJzW2ldKTsKKyAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5nW2ldKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aEluTWFya2VyQnl0ZSkKICAgICAgICAg
ICAgIGFwcGVuZEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odW5pY29kZVN0cmluZ01h
cmtlckJ5dGUgfCBsZW5ndGgpKTsKQEAgLTcxMCw4ICs3MDksOCBAQCB2b2lkIEJpbmFyeVByb3Bl
cnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICAgICAgICAgIGFwcGVuZEludGVnZXIobGVuZ3RoKTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGFw
cGVuZEJ5dGUoY2hhcmFjdGVyc1tpXSA+PiA4KTsKLSAgICAgICAgICAgIGFwcGVuZEJ5dGUoY2hh
cmFjdGVyc1tpXSk7CisgICAgICAgICAgICBhcHBlbmRCeXRlKHN0cmluZ1tpXSA+PiA4KTsKKyAg
ICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5nW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCmluZGV4IDJlZGMzNjZkYWZkZWNk
MDJkZDEwZmYyNzJhMTc1NTQ2OTE4Y2ZmMDUuLjBkNzBiNWMzYWI4MDZkMTM4NzdmN2MxZTFhNmRm
Mzg4MWU2ZTA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcApA
QCAtMTkyLDcgKzE5Miw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0KGxvbmcg
c3RhcnRPZmZzZXQsIGxvbmcgZW5kT2Zmc2V0LCBCU1RSKiB0ZXh0KQogICAgIGVuZE9mZnNldCA9
IGNvbnZlcnRTcGVjaWFsT2Zmc2V0KGVuZE9mZnNldCk7CiAgICAgV1RGOjpTdHJpbmcgc3Vic3Ry
aW5nVGV4dCA9IG1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgpLnN1YnN0cmluZyhzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQpOwogCi0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xl
bihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVu
Z3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAg
ICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4g
RV9PVVRPRk1FTU9SWTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRl
eHQ6OmdldF90ZXh0QmVmb3JlT2Zmc2V0KGxvbmcgb2Zmc2V0LCBlbnVtIElBMlRleHRCb3VuZGFy
eVR5CiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5n
VGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNl
dCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJp
bmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOwor
ICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAo
c3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9G
TUVNT1JZOwpAQCAtMzI0LDcgKzMyNCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwCiAgICAg
ICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1f
b2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFy
dE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0
ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1Rl
eHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApA
QCAtMzg0LDcgKzM4NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QXRPZmZz
ZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSBiCiAgICAgICAgIHJldHVy
biBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50
ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7
Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmlu
ZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5n
dGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpAQCAtNjc0LDcg
KzY3NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OnNldEF0dHJpYnV0ZXMobG9uZyBzdGFy
dE9mZnNldCwgbG9uZyBlbmRPZmZzZXQsIEJTVFIqIGF0CiBIUkVTVUxUIEFjY2Vzc2libGVUZXh0
OjpnZXRfYXR0cmlidXRlcyhCU1RSKiBhdHRyaWJ1dGVzKQogewogICAgIFdURjo6U3RyaW5nIHRl
eHQoInRleHQtbW9kZWw6YTEiKTsKLSAgICAqYXR0cmlidXRlcyA9IFN5c0FsbG9jU3RyaW5nTGVu
KHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSk7CisgICAgKmF0dHJp
YnV0ZXMgPSBCU3RyaW5nKHRleHQpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAppbmRleCA4YTU3ODBjNDdkOTI0MTUxN2FmMWU4
NTQzNmNmZjAwY2Y0NWY4OTQzLi43NDM1ZmUyMzA1YjgwYjM2NWIzM2QxNTBiNWY5MjhjYTA4NGI1
NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIkRPTUNTU0NsYXNzZXMuaCIKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAvLyBET01DU1NTdHlsZURlY2xhcmF0aW9uIC0gRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDIsNyArMTAzLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVl
KAogewogICAgIFdURjo6U3RyaW5nIHByb3BlcnR5TmFtZVN0cmluZyhwcm9wZXJ0eU5hbWUpOwog
ICAgIFdURjo6U3RyaW5nIHZhbHVlID0gbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0
eU5hbWVTdHJpbmcpOwotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbih2YWx1ZS5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IFdlYkNv
cmU6OkJTdHJpbmcodmFsdWUpLnJlbGVhc2UoKTsKICAgICBpZiAodmFsdWUubGVuZ3RoKCkgJiYg
ISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGVjYWYyOWEyODI3MDdlOTdi
NDM3YWRjNTc2MGNjZjlmOGEzYTU0MjAuLjhiOWQ1MmVjMGQ5MGNlOGNmM2VlODFkNDFmMmZhM2Vl
YjJlYjhjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTEyMiw3ICsx
MjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Om5vZGVWYWx1ZSgKICAg
ICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBXVEY6OlN0cmluZyBu
b2RlVmFsdWVTdHIgPSBtX25vZGUtPm5vZGVWYWx1ZSgpOwotICAgICpyZXN1bHQgPSBTeXNBbGxv
Y1N0cmluZ0xlbihub2RlVmFsdWVTdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbm9kZVZhbHVl
U3RyLmxlbmd0aCgpKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhub2RlVmFsdWVTdHIpLnJlbGVh
c2UoKTsKICAgICBpZiAobm9kZVZhbHVlU3RyLmxlbmd0aCgpICYmICEqcmVzdWx0KQogICAgICAg
ICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEwMzMsNyArMTAz
Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRl
KAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdURjo6U3RyaW5nIG5hbWVTdHJpbmcobmFt
ZSwgU3lzU3RyaW5nTGVuKG5hbWUpKTsKICAgICBXVEY6OlN0cmluZyYgYXR0clZhbHVlU3RyaW5n
ID0gKFdURjo6U3RyaW5nJikgbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZVN0cmluZyk7Ci0g
ICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nTGVuKGF0dHJWYWx1ZVN0cmluZy5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBhdHRyVmFsdWVTdHJpbmcubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBC
U3RyaW5nKGF0dHJWYWx1ZVN0cmluZykucmVsZWFzZSgpOwogICAgIGlmIChhdHRyVmFsdWVTdHJp
bmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwog
ICAgIHJldHVybiBTX09LOwpAQCAtMTI1Nyw3ICsxMjU3LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NRWxlbWVudDo6Zm9udChXZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNj
cmlwdGlvCiAKICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gcmVuZGVyZXIt
PnN0eWxlKCkuZm9udCgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIEF0b21pY1N0cmluZyBmYW1p
bHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKLSAgICB3ZWJGb250RGVzY3JpcHRp
b24tPmZhbWlseSA9IGZhbWlseS5zdHJpbmcoKS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOworCisg
ICAgLy8gRklYTUU6IFRoaXMgbGVha3MuIERlbGV0ZSB0aGlzIHdob2xlIGZ1bmN0aW9uIHRvIGdl
dCByaWQgb2YgdGhlIGxlYWsuCisgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZmZXIgPSBu
ZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKKyAgICBTdHJpbmdWaWV3KGZhbWlseS5zdHJpbmco
KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcik7CisK
KyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNCdWZmZXI7
CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGggPSBmYW1pbHkubGVuZ3RoKCk7
CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
U2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9IGZvbnREZXNjcmlwdGlvbi53
ZWlnaHQoKSA+PSBXZWJDb3JlOjpGb250V2VpZ2h0NjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENs
YXNzZXMuY3BwCmluZGV4IGEyZjA4MmMxMTNjZjc4M2I3ODA2ZDA1OWMyOWM1ZTMxYzU3NzJhZDgu
LmIzOGM3N2E2ZTZmNjMzMDM1YTZkNTkzMGQ5YjcxODIwNzZhMDk3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQoCiB7CiAgICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgV1RGOjpTdHJpbmcgaW5u
ZXJUZXh0U3RyaW5nID0gdG9IVE1MRWxlbWVudChtX2VsZW1lbnQpLT5pbm5lclRleHQoKTsKLSAg
ICAqcmVzdWx0ID0gQlN0cmluZyhpbm5lclRleHRTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgaW5uZXJUZXh0U3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJT
dHJpbmcoaW5uZXJUZXh0U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
ICAgICAgIApAQCAtNTYxLDcgKzU2MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
SFRNTEZvcm1FbGVtZW50OjphY3Rpb24oCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hU
TUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKICAgICBXVEY6OlN0cmluZyBhY3Rpb25TdHJpbmcg
PSB0b0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpLT5hY3Rpb24oKTsKLSAgICAqcmVzdWx0ID0g
QlN0cmluZyhhY3Rpb25TdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgYWN0aW9uU3RyaW5n
Lmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoYWN0aW9uU3RyaW5n
KS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC01OTEsNyArNTkxLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCgK
IHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTEZvcm1FbGVtZW50KG1fZWxlbWVudCkp
OwogICAgIFdURjo6U3RyaW5nIG1ldGhvZFN0cmluZyA9IHRvSFRNTEZvcm1FbGVtZW50KG1fZWxl
bWVudCktPm1ldGhvZCgpOwotICAgICpyZXN1bHQgPSBCU3RyaW5nKG1ldGhvZFN0cmluZy5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpLCBtZXRob2RTdHJpbmcubGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAg
ICAqcmVzdWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKQEAgLTEyMTAsNyArMTIxMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dmFsdWUoCiAgICAgQVNTRVJUKG1fZWxlbWVudCAm
JiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCk7CiAgICAgV1RGOjpT
dHJpbmcgdmFsdWVTdHJpbmcgPSBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7Ci0gICAgKnJlc3VsdCA9
IEJTdHJpbmcodmFsdWVTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdmFsdWVTdHJpbmcu
bGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyh2YWx1ZVN0cmluZyku
cmVsZWFzZSgpOwogICAgIGlmICh2YWx1ZVN0cmluZy5sZW5ndGgoKSAmJiAhKnJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xNTQ3LDcg
KzE1NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnZhbHVlKAogICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50
KG1fZWxlbWVudCkpOwogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhRWxlbWVudCA9
IHRvSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpOwogICAgIFdURjo6U3RyaW5nIHZhbHVl
U3RyaW5nID0gdGV4dGFyZWFFbGVtZW50LT52YWx1ZSgpOwotICAgICpyZXN1bHQgPSBCU3RyaW5n
KHZhbHVlU3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHZhbHVlU3RyaW5nLmxlbmd0aCgp
KS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVTdHJpbmcpLnJlbGVhc2Uo
KTsKICAgICBpZiAodmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggZTUyMzczMTFjY2U3NjE2MzkyYjZhMjQ3MTY0OTIy
ZjRjODk0NDI3OS4uMzMyMDAxMThhMWJkNTA1ZGMzOTA3MzdkYjJiZjYwYmFmN2JkMWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC01MSwxMCArNTEsNyBA
QCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0IFVSTCYgdXJsKQogCiBD
RlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBDRlN0cmluZ1JlZiBjZlBhdGggPSBDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIChjb25zdCBVbmlDaGFyKilzdHJpbmcuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAg
ICBDRlVSTFJlZiBwYXRoVVJMID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQ
YXRoLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7Ci0gICAgQ0ZSZWxlYXNlKGNmUGF0
aCk7Ci0gICAgcmV0dXJuIHBhdGhVUkw7CisgICAgcmV0dXJuIENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlLCBmYWxzZSk7CiB9CiAKIFN0cmluZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVD
RlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggM2E0NDQ5
MWE1MDRjZjk2NWRjM2Q0OWEwZTdjYWNiNWY5YTI3MmUwNS4uMzFiYmMwNjIwZWEwMTk4MGI3Zjlm
NGNhMTEzNTBhOTJlMjUxYjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIGlu
dCogbWlzc3BlbGxpbmdMb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdFZpZXdTcGVjaWZp
Y1NwZWxsaW5nKG1fd2ViVmlldyk7Ci0gICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dl
YlZpZXcsIHRleHQudG9TdHJpbmdXaXRob3V0Q29weWluZygpLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3Ro
KTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlz
c3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlucHV0V29yZCkK
QEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAgICAgaW5pdFZp
ZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVtV2ViR3JhbW1h
ckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNoZWNrR3JhbW1h
ck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFt
bWFyTG9jYXRpb24sIGJhZEdyYW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVj
a0dyYW1tYXJPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCks
IHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRH
cmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDVkZDJiYmQ3ZWYyNTMzNzkzZTlhYjJh
OGE2NmI4NmQ1ZTg3ZTcwMWEuLjhmZWU4ZWI0MGU2NDRiMTZkMWU4MTU2ODYyYTdjOGI4MjJkZTg1
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjp1bnJlYWNoYWJsZVVSTCgK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkKIHsKICAgICBVUkwgdW5yZWFjaGFi
bGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKLSAgICBCU3RyaW5nIHVybFN0cmlu
ZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgIEJTdHJpbmcgdXJsU3Ry
aW5nKHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKIAogICAgICp1cmwgPSB1cmxTdHJpbmcucmVs
ZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4
IGVjMDYzNGJmMGM5ODJmNjE1ODU2NjNlYTA3MThkYzA5OGMzNTYxMTUuLmQ4MjBjZjU5MDczYzRj
NDU5MmRlODZmNjQ0NmQ3N2E4NGIzMzI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCgKICAgICAgICAgYnVuZGxlLnRydW5jYXRlKDEpOwog
CiAgICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKTsKLSAg
ICAqYnVuZGxlUGF0aCA9IFN5c0FsbG9jU3RyaW5nTGVuKGJ1bmRsZS5kZXByZWNhdGVkQ2hhcmFj
dGVycygpLCBidW5kbGUubGVuZ3RoKCkpOworICAgICpidW5kbGVQYXRoID0gQlN0cmluZyhidW5k
bGUpLnJlbGVhc2UoKTsKICAgICBpZiAoISpidW5kbGVQYXRoKQogICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
CmluZGV4IDBmNmZlZWY4YjkxNzlhODkyNGM5MzQxYTNkZWYxZTFlMTEwZDI0ZTEuLjVkZmJhMjkz
OWFmY2E5OTU5YTRiZTA1ZjFlMzgzNTU3M2U4ZDFjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkQ0ZOZXQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlk
RmluaXNoKCkKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVwb3J0QnVuZGxlUGF0aEFzRmluYWxQ
YXRoID0gdHJ1ZTsKIAotICAgICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3RpbmF0
aW9uLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIG1fZGVzdGluYXRpb24ubGVuZ3RoKCkpOworICAg
ICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3RpbmF0aW9uKTsKICAgICAgICAgaWYg
KEZBSUxFRChtX2RlbGVnYXRlLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSh0aGlzLCBkZXN0aW5hdGlvbkJTVFIpKSkKICAgICAgICAgICAgIExPR19FUlJPUigiZGVsZWdh
dGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCkgZmFpbGVkIik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IGFmZmVhNjc3MDdlMWQ3ZDM1
Y2Q3N2Y4NWNmNTk4MzY0ODhmN2I4MDYuLjI2M2I3NTdkYzA3NGMwNjRhMTE0NDMyMzEwNmQxNGFk
NjViMmNkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMTgwLDcg
KzE4MCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgICAg
IGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CiAgICAg
ICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKLSAgICAgICAgQlN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUJTVFIoc3VnZ2Vz
dGVkRmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3VnZ2VzdGVkRmlsZW5hbWUubGVu
Z3RoKCkpOworICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggNGEwM2I3OGJh
ODA0YmQ4MmY3NmM1OWMyYWI2NTFkZDllOTU3MmQ5MC4uMTMyYWQ5Mzg3ZjA2YmY0NjIxNGZjZmZi
ZWIwZjJhOGUyZGIxOTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRl
c3RSZXN1bHQuaD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKExQQ1dT
VFIgczEsIExQQ1dTVFIgczIpCiBzdGF0aWMgSFJFU1VMVCBjb252ZXJ0U3RyaW5nVG9WYXJpYW50
KFZBUklBTlQqIHBWYXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIFZfVlQocFZhcikg
PSBWVF9CU1RSOwotICAgIFZfQlNUUihwVmFyKSA9IFN5c0FsbG9jU3RyaW5nTGVuKHN0cmluZy5k
ZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIFZfQlNUUihwVmFy
KSA9IEJTdHJpbmcoc3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSAm
JiAhVl9CU1RSKHBWYXIpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IGMzMWZmMDAwOWMxM2EzYzY3YjVmNzRhZjBiNzVlMjA3MWZkMTBh
MzYuLjgwYzYzYTZiY2VmYTM0Y2M2ZTEwZGIyNWZlZGRhZmM5ZGNiYmQwYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlYXJj
aEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCB1bnNpZ25lZCBjTGFi
CiAgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3ZlOwogICAgIFN0cmluZyBsYWJlbCA9IGNvcmVG
cmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVt
ZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAKLSAgICAq
cmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFiZWwuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
bGFiZWwubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGxhYmVsKS5yZWxlYXNlKCk7
CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9P
VVRPRk1FTU9SWTsKICAgICBpZiAob3V0UmVzdWx0RGlzdGFuY2UpCkBAIC0xNDA0LDcgKzE0MDQs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJT
VFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElETwogCiAgICAgU3RyaW5nIGxhYmVsID0gY29yZUZy
YW1lLT5tYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGxhYmVsU3RyaW5ncywgY29yZUVsZW1lbnQp
OwogICAgIAotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbihsYWJlbC5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcobGFi
ZWwpLnJlbGVhc2UoKTsKICAgICBpZiAobGFiZWwubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJI
aXN0b3J5LmNwcAppbmRleCAyOGFmNmNiZDFkOTA0ZWI4NDYyZWZkNGRmNTdkNzZiYTNkMTlmMTc0
Li5kNjVhMDdlMjY1MmNmNGNjNDk2ZWFkNjAxNzg0Y2VlMThmOTRiMDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5LmNwcApAQCAtNTY1LDggKzU2NSw2IEBAIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+
IFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNv
CiAKIHZvaWQgV2ViSGlzdG9yeTo6YWRkVmlzaXRlZExpbmtzVG9QYWdlR3JvdXAoUGFnZUdyb3Vw
JiBncm91cCkKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2VudHJpZXNCeVVSTC5iZWdpbigpOyBp
dCAhPSBtX2VudHJpZXNCeVVSTC5lbmQoKTsgKytpdCkgewotICAgICAgICBjb25zdCBTdHJpbmcm
IHVybCA9IGl0LT5rZXk7Ci0gICAgICAgIGdyb3VwLmFkZFZpc2l0ZWRMaW5rKHVybC5kZXByZWNh
dGVkQ2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHVy
bCA6IG1fZW50cmllc0J5VVJMLmtleXMoKSkKKyAgICAgICAgZ3JvdXAuYWRkVmlzaXRlZExpbmso
dmlzaXRlZExpbmtIYXNoKHVybCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViS2l0R3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3Bw
CmluZGV4IDE2MDlhNTA1OTY1ZjA1OTc2NmQxZDM1MGRkNjY3OTE2NjI3OTdlMmQuLmM2ZjI5MGRh
YTJkMjZmOTUwMDVmNGUxZDBmZjU1NzY2Y2QzZGQzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRH
cmFwaGljcy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJDb3JlVGV4dFJlbmRlcmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKQEAgLTExNyw3ICsxMTgsNyBAQCB1bnNpZ25l
ZCBDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgoTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBj
b25zdCBXZWJGb250RGVzYwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1
cmdlUHJldmVudGVyOwogCiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZ1RydW5jYXRvcjo6Y2Vu
dGVyVHJ1bmNhdGUoU3RyaW5nKHRleHQsIGxlbmd0aCksIHdpZHRoLCBtYWtlRm9udChkZXNjcmlw
dGlvbiksIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7Ci0gICAgbWVtY3B5
KGJ1ZmZlciwgcmVzdWx0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcikpOworICAgIFN0cmluZ1ZpZXcocmVzdWx0KS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChidWZmZXIpOwogICAgIGJ1ZmZlcltyZXN1bHQubGVuZ3RoKCldID0gJ1wwJzsK
ICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCgpOwogfQpAQCAtMTI5LDcgKzEzMCw3IEBAIHVuc2ln
bmVkIFJpZ2h0VHJ1bmNhdGVTdHJpbmdUb1dpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwg
Y29uc3QgV2ViRm9udERlc2NyCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hl
UHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nVHJ1bmNhdG9yOjpy
aWdodFRydW5jYXRlKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3aWR0aCwgbWFrZUZvbnQoZGVzY3Jp
cHRpb24pLCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwotICAgIG1lbWNw
eShidWZmZXIsIHJlc3VsdC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCByZXN1bHQubGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpKTsKKyAgICBTdHJpbmdWaWV3KHJlc3VsdCkuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBidWZmZXJbcmVzdWx0Lmxlbmd0aCgpXSA9ICdcMCc7
CiAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGgoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXgg
OWY2YmIxZjEzODVmZjU1ZjA4ZjFhZWI5MDhhZWQ5YWQwY2NmYmNiNC4uNjA0NTgzYmQ2MjI3OGM4
ZDFkMTRjMmRjYzFlNDFiNjRjY2YzZDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMxNzgs
NyArMzE3OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0QXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogYXBwbGljYXRpb25OYW1lKQogewotICAgICphcHBsaWNhdGlvbk5hbWUgPSBTeXNBbGxv
Y1N0cmluZ0xlbihtX2FwcGxpY2F0aW9uTmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtX2Fw
cGxpY2F0aW9uTmFtZS5sZW5ndGgoKSk7CisgICAgKmFwcGxpY2F0aW9uTmFtZSA9IEJTdHJpbmco
bV9hcHBsaWNhdGlvbk5hbWUpLnJlbGVhc2UoKTsKICAgICBpZiAoISphcHBsaWNhdGlvbk5hbWUg
JiYgbV9hcHBsaWNhdGlvbk5hbWUubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVN
T1JZOwogICAgIHJldHVybiBTX09LOwpAQCAtMzE5OCw3ICszMTk4LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXN0b21Vc2VyQWdlbnQoCiAgICAgKnVzZXJBZ2VudFN0
cmluZyA9IDA7CiAgICAgaWYgKCFtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVy
biBTX09LOwotICAgICp1c2VyQWdlbnRTdHJpbmcgPSBTeXNBbGxvY1N0cmluZ0xlbihtX3VzZXJB
Z2VudEN1c3RvbS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBtX3VzZXJBZ2VudEN1c3RvbS5sZW5n
dGgoKSk7CisgICAgKnVzZXJBZ2VudFN0cmluZyA9IEJTdHJpbmcobV91c2VyQWdlbnRDdXN0b20p
LnJlbGVhc2UoKTsKICAgICBpZiAoISp1c2VyQWdlbnRTdHJpbmcgJiYgbV91c2VyQWdlbnRDdXN0
b20ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBT
X09LOwpAQCAtMzY0Niw3ICszNjQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3Ojpncm91cE5hbWUoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBTX09LOwog
ICAgIFN0cmluZyBncm91cE5hbWVTdHJpbmcgPSBtX3BhZ2UtPmdyb3VwTmFtZSgpOwotICAgICpn
cm91cE5hbWUgPSBTeXNBbGxvY1N0cmluZ0xlbihncm91cE5hbWVTdHJpbmcuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAqZ3JvdXBOYW1lID0g
QlN0cmluZyhncm91cE5hbWVTdHJpbmcpLnJlbGVhc2UoKTsKICAgICBpZiAoISpncm91cE5hbWUg
JiYgZ3JvdXBOYW1lU3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9S
WTsKICAgICByZXR1cm4gU19PSzsKQEAgLTM3NTYsNyArMzc1Niw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRUZXh0KAogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgU3RyaW5nIGZyYW1lU2VsZWN0ZWRUZXh0ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKTsKLSAgICAqdGV4dCA9IFN5c0FsbG9jU3RyaW5nTGVuKGZyYW1lU2Vs
ZWN0ZWRUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0
aCgpKTsKKyAgICAqdGV4dCA9IEJTdHJpbmcoZnJhbWVTZWxlY3RlZFRleHQpLnJlbGVhc2UoKTsK
ICAgICBpZiAoISp0ZXh0ICYmIGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTU4MjcsNyArNTgyNyw3
IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252ZXJ0U3RyaW5nKEZyYW1lKiB0
YXJnZXRGcmFtZSwgUkVDT05WRVJUU1RSSU5HCiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0ckxl
biA9IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1RhcmdldFN0ckxlbiA9
IHRleHQubGVuZ3RoKCk7CiAgICAgcmVjb252ZXJ0U3RyaW5nLT5kd1N0ck9mZnNldCA9IHNpemVv
ZihSRUNPTlZFUlRTVFJJTkcpOwotICAgIG1lbWNweShyZWNvbnZlcnRTdHJpbmcgKyAxLCB0ZXh0
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsK
KyAgICBTdHJpbmdWaWV3KHRleHQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50ZXJw
cmV0X2Nhc3Q8VUNoYXIqPihyZWNvbnZlcnRTdHJpbmcgKyAxKSk7CiAgICAgcmV0dXJuIHRvdGFs
U2l6ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226860</attachid>
            <date>2014-03-16 14:31:43 -0700</date>
            <delta_ts>2014-03-16 19:28:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130305-20140316143124.patch</filename>
            <type>text/plain</type>
            <size>25494</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmY0ZTk4NjY1
ZDIxMWIyZmVlYTEyOThmNmU0NzJiNDY2Mjg5ZTg0Yy4uN2Y3ZTM4ZWFlMDhmNTJhOWY0NjUyNGJi
YWE1NDY3ODQ1ZDU3ZWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTAzLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
YWxsIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIHVzZSBmcm9tIFdlYktpdCBkaXJlY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXpl
cjo6YXBwZW5kU3RyaW5nT2JqZWN0KTogVXNlIG9wZXJhdG9yW10KKyAgICAgICAgaW5zdGVhZCBv
ZiBkZXByZWNhdGVkQ2hhcmFjdGVycy4KKwogMjAxNC0wMy0xNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgcHJvZHVjdGlvbiBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAwNTFiZjEyMDU3YWY5NDQyY2U5NDc0Y2EyZTY3ZGU4NTY1NzM5MTI5Li4yNDhm
Njg3YTBiNDVmZTg5NzcxZjE5NmUwZDBkYzJjM2E4YmEwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTQtMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBhbGwgZGVwcmVjYXRlZENoYXJhY3RlcnMgdXNlIGZyb20gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAz
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFj
Y2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X3RleHQp
OiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVuLAorICAgICAgICB3aGlj
aCBoYW5kbGVzIFN0cmluZyBkaXJlY3RseS4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRf
dGV4dEJlZm9yZU9mZnNldCk6IERpdHRvLgorICAgICAgICAoQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKEFjY2Vzc2libGVUZXh0OjpnZXRfdGV4
dEF0T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6Z2V0X2F0dHJpYnV0
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBE
T01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoRE9N
RWxlbWVudDo6Zm9udCk6IFJld29yayB0aGlzIHRvIGxlYWsgYSBzdHJpbmcsIHNpbmNlIGl0IHJl
dHVybnMgYQorICAgICAgICBwb2ludGVyIHRvIGEgZm9udCBmYW1pbHkgbmFtZSdzIGNoYXJhY3Rl
cnMgd2l0aCBubyBkZWZpbmVkIGxpZmV0aW1lLgorCisgICAgICAgICogRE9NSFRNTENsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NSFRNTEVsZW1lbnQ6OmlubmVyVGV4dCk6IFVzZSBCU3RyaW5nJ3Mg
U3RyaW5nLWJhc2VkIGNvbnN0cnVjdG9yLAorICAgICAgICBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkg
cGFzc2luZyBhIGNoYXJhY3RlciBwb2ludGVyLgorICAgICAgICAoRE9NSFRNTEZvcm1FbGVtZW50
OjphY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKTog
RGl0dG8uCisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSk6IERpdHRvLgorICAg
ICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUpOiBEaXR0by4KKworICAgICAgICAq
IE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBh
dGhTdHJpbmdUb0ZpbGVDRlVSTFJlZik6IFVzZSBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OnVw
Y29udmVydGVkQ2hhcmFjdGVycy4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6dW5yZWFjaGFibGVVUkwpOiBVc2UgQlN0cmluZydzIFN0cmlu
Zy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHBhc3Np
bmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKworICAgICAgICAqIFdlYkRvd25sb2FkLmNwcDoKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCk6IFVzZSBCU3RyaW5n
IGluc3RlYWQgb2YgU3lzQWxsb2NTdHJpbmdMZW4uCisKKyAgICAgICAgKiBXZWJEb3dubG9hZENG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkaWRGaW5pc2gpOiBVc2UgQlN0cmluZydz
IFN0cmluZy1iYXNlZCBjb25zdHJ1Y3RvciwKKyAgICAgICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5
IHBhc3NpbmcgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKyAgICAgICAgKiBXZWJEb3dubG9hZEN1cmwu
Y3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERpdHRvLgor
CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKGNvbnZlcnRT
dHJpbmdUb1ZhcmlhbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9jU3RyaW5nTGVu
LgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZTo6bWF0Y2hMYWJl
bHNBZ2FpbnN0RWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJIaXN0b3J5OjphZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cCk6IFVzZSBhIGJl
dHRlciBsb29wIGFuZCBjYWxsCisgICAgICAgIHZpc2l0ZWRMaW5rSGFzaCwgc2luY2UgaXQgY2Fu
IHRha2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAg
IChDZW50ZXJUcnVuY2F0ZVN0cmluZ1RvV2lkdGgpOiBVc2UgU3RyaW5nVmlldzo6Z2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQuCisgICAgICAgIChSaWdodFRydW5jYXRlU3RyaW5nVG9XaWR0aCk6
IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOiBVc2UgQlN0cmluZyBpbnN0ZWFkIG9mIFN5c0FsbG9j
U3RyaW5nTGVuLgorICAgICAgICAoV2ViVmlldzo6Y3VzdG9tVXNlckFnZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJWaWV3Ojpncm91cE5hbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYlZpZXc6OnNl
bGVjdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0UmVjb252
ZXJ0U3RyaW5nKTogVXNlIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0Lgor
CiAyMDE0LTAzLTE0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNv
cHlyaWdodCBoZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jp
bmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKaW5kZXggOTMwOTgyNWYzMmM0ODFkZWQ1ZjhjY2I2NzdjODQ5YmYxYTY0
YmRmMy4uNDk1NGE1NDE5ZGExMzczZGJjOTI2MWJiZjExMzI1MDFlM2JhYmE0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtNjkx
LDkgKzY5MSw4IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kSW50
ZWdlcihzaXplX3QgaW50ZWdlcikKIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6
YXBwZW5kU3RyaW5nT2JqZWN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHN0YXJ0T2Jq
ZWN0KCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAg
aWYgKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgaWYg
KHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7CiAgICAgICAgIGlmIChsZW5ndGggPD0gbWF4
TGVuZ3RoSW5NYXJrZXJCeXRlKQogICAgICAgICAgICAgYXBwZW5kQnl0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihhc2NpaVN0cmluZ01hcmtlckJ5dGUgfCBsZW5ndGgpKTsKICAgICAgICAg
ZWxzZSB7CkBAIC03MDEsNyArNzAwLDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxp
emVyOjphcHBlbmRTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgICAg
ICBhcHBlbmRJbnRlZ2VyKGxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXBwZW5kQnl0ZShjaGFyYWN0
ZXJzW2ldKTsKKyAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5nW2ldKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aEluTWFya2VyQnl0ZSkKICAgICAgICAg
ICAgIGFwcGVuZEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odW5pY29kZVN0cmluZ01h
cmtlckJ5dGUgfCBsZW5ndGgpKTsKQEAgLTcxMCw4ICs3MDksOCBAQCB2b2lkIEJpbmFyeVByb3Bl
cnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICAgICAgICAgIGFwcGVuZEludGVnZXIobGVuZ3RoKTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGFw
cGVuZEJ5dGUoY2hhcmFjdGVyc1tpXSA+PiA4KTsKLSAgICAgICAgICAgIGFwcGVuZEJ5dGUoY2hh
cmFjdGVyc1tpXSk7CisgICAgICAgICAgICBhcHBlbmRCeXRlKHN0cmluZ1tpXSA+PiA4KTsKKyAg
ICAgICAgICAgIGFwcGVuZEJ5dGUoc3RyaW5nW2ldKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCmluZGV4IDJlZGMzNjZkYWZkZWNk
MDJkZDEwZmYyNzJhMTc1NTQ2OTE4Y2ZmMDUuLjBkNzBiNWMzYWI4MDZkMTM4NzdmN2MxZTFhNmRm
Mzg4MWU2ZTA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVUZXh0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcApA
QCAtMTkyLDcgKzE5Miw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0KGxvbmcg
c3RhcnRPZmZzZXQsIGxvbmcgZW5kT2Zmc2V0LCBCU1RSKiB0ZXh0KQogICAgIGVuZE9mZnNldCA9
IGNvbnZlcnRTcGVjaWFsT2Zmc2V0KGVuZE9mZnNldCk7CiAgICAgV1RGOjpTdHJpbmcgc3Vic3Ry
aW5nVGV4dCA9IG1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgpLnN1YnN0cmluZyhzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0IC0gc3RhcnRPZmZzZXQpOwogCi0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xl
bihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVu
Z3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAg
ICAgaWYgKHN1YnN0cmluZ1RleHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4g
RV9PVVRPRk1FTU9SWTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRl
eHQ6OmdldF90ZXh0QmVmb3JlT2Zmc2V0KGxvbmcgb2Zmc2V0LCBlbnVtIElBMlRleHRCb3VuZGFy
eVR5CiAgICAgICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5n
VGV4dCA9IG1fb2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNl
dCAtICpzdGFydE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJp
bmdUZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOwor
ICAgICp0ZXh0ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAo
c3Vic3RyaW5nVGV4dC5sZW5ndGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9G
TUVNT1JZOwpAQCAtMzI0LDcgKzMyNCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90
ZXh0QWZ0ZXJPZmZzZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwCiAgICAg
ICAgIHJldHVybiBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1f
b2JqZWN0LT50ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFy
dE9mZnNldCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0
ID0gQlN0cmluZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAgICAgaWYgKHN1YnN0cmluZ1Rl
eHQubGVuZ3RoKCkgJiYgISp0ZXh0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApA
QCAtMzg0LDcgKzM4NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OmdldF90ZXh0QXRPZmZz
ZXQobG9uZyBvZmZzZXQsIGVudW0gSUEyVGV4dEJvdW5kYXJ5VHlwZSBiCiAgICAgICAgIHJldHVy
biBTX0ZBTFNFOwogCiAgICAgV1RGOjpTdHJpbmcgc3Vic3RyaW5nVGV4dCA9IG1fb2JqZWN0LT50
ZXh0KCkuc3Vic3RyaW5nKCpzdGFydE9mZnNldCwgKmVuZE9mZnNldCAtICpzdGFydE9mZnNldCk7
Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihzdWJzdHJpbmdUZXh0LmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIHN1YnN0cmluZ1RleHQubGVuZ3RoKCkpOworICAgICp0ZXh0ID0gQlN0cmlu
ZyhzdWJzdHJpbmdUZXh0KS5yZWxlYXNlKCk7CiAKICAgICBpZiAoc3Vic3RyaW5nVGV4dC5sZW5n
dGgoKSAmJiAhKnRleHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpAQCAtNjc0LDcg
KzY3NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OnNldEF0dHJpYnV0ZXMobG9uZyBzdGFy
dE9mZnNldCwgbG9uZyBlbmRPZmZzZXQsIEJTVFIqIGF0CiBIUkVTVUxUIEFjY2Vzc2libGVUZXh0
OjpnZXRfYXR0cmlidXRlcyhCU1RSKiBhdHRyaWJ1dGVzKQogewogICAgIFdURjo6U3RyaW5nIHRl
eHQoInRleHQtbW9kZWw6YTEiKTsKLSAgICAqYXR0cmlidXRlcyA9IFN5c0FsbG9jU3RyaW5nTGVu
KHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSk7CisgICAgKmF0dHJp
YnV0ZXMgPSBCU3RyaW5nKHRleHQpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAppbmRleCA4YTU3ODBjNDdkOTI0MTUxN2FmMWU4
NTQzNmNmZjAwY2Y0NWY4OTQzLi43NDM1ZmUyMzA1YjgwYjM2NWIzM2QxNTBiNWY5MjhjYTA4NGI1
NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIkRPTUNTU0NsYXNzZXMuaCIKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAvLyBET01DU1NTdHlsZURlY2xhcmF0aW9uIC0gRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDIsNyArMTAzLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVl
KAogewogICAgIFdURjo6U3RyaW5nIHByb3BlcnR5TmFtZVN0cmluZyhwcm9wZXJ0eU5hbWUpOwog
ICAgIFdURjo6U3RyaW5nIHZhbHVlID0gbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0
eU5hbWVTdHJpbmcpOwotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbih2YWx1ZS5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IFdlYkNv
cmU6OkJTdHJpbmcodmFsdWUpLnJlbGVhc2UoKTsKICAgICBpZiAodmFsdWUubGVuZ3RoKCkgJiYg
ISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGVjYWYyOWEyODI3MDdlOTdi
NDM3YWRjNTc2MGNjZjlmOGEzYTU0MjAuLjhiOWQ1MmVjMGQ5MGNlOGNmM2VlODFkNDFmMmZhM2Vl
YjJlYjhjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTEyMiw3ICsx
MjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Om5vZGVWYWx1ZSgKICAg
ICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBXVEY6OlN0cmluZyBu
b2RlVmFsdWVTdHIgPSBtX25vZGUtPm5vZGVWYWx1ZSgpOwotICAgICpyZXN1bHQgPSBTeXNBbGxv
Y1N0cmluZ0xlbihub2RlVmFsdWVTdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbm9kZVZhbHVl
U3RyLmxlbmd0aCgpKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhub2RlVmFsdWVTdHIpLnJlbGVh
c2UoKTsKICAgICBpZiAobm9kZVZhbHVlU3RyLmxlbmd0aCgpICYmICEqcmVzdWx0KQogICAgICAg
ICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEwMzMsNyArMTAz
Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRl
KAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdURjo6U3RyaW5nIG5hbWVTdHJpbmcobmFt
ZSwgU3lzU3RyaW5nTGVuKG5hbWUpKTsKICAgICBXVEY6OlN0cmluZyYgYXR0clZhbHVlU3RyaW5n
ID0gKFdURjo6U3RyaW5nJikgbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZVN0cmluZyk7Ci0g
ICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nTGVuKGF0dHJWYWx1ZVN0cmluZy5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBhdHRyVmFsdWVTdHJpbmcubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBC
U3RyaW5nKGF0dHJWYWx1ZVN0cmluZykucmVsZWFzZSgpOwogICAgIGlmIChhdHRyVmFsdWVTdHJp
bmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwog
ICAgIHJldHVybiBTX09LOwpAQCAtMTI1Nyw3ICsxMjU3LDEyIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NRWxlbWVudDo6Zm9udChXZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNj
cmlwdGlvCiAKICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gcmVuZGVyZXIt
PnN0eWxlKCkuZm9udCgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIEF0b21pY1N0cmluZyBmYW1p
bHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKLSAgICB3ZWJGb250RGVzY3JpcHRp
b24tPmZhbWlseSA9IGZhbWlseS5zdHJpbmcoKS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOworCisg
ICAgLy8gRklYTUU6IFRoaXMgbGVha3MuIERlbGV0ZSB0aGlzIHdob2xlIGZ1bmN0aW9uIHRvIGdl
dCByaWQgb2YgdGhlIGxlYWsuCisgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZmZXIgPSBu
ZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKKyAgICBTdHJpbmdWaWV3KGZhbWlseS5zdHJpbmco
KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcik7CisK
KyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNCdWZmZXI7
CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGggPSBmYW1pbHkubGVuZ3RoKCk7
CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
U2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9IGZvbnREZXNjcmlwdGlvbi53
ZWlnaHQoKSA+PSBXZWJDb3JlOjpGb250V2VpZ2h0NjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENs
YXNzZXMuY3BwCmluZGV4IGEyZjA4MmMxMTNjZjc4M2I3ODA2ZDA1OWMyOWM1ZTMxYzU3NzJhZDgu
LmIzOGM3N2E2ZTZmNjMzMDM1YTZkNTkzMGQ5YjcxODIwNzZhMDk3OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxFbGVtZW50Ojppbm5lclRleHQoCiB7CiAgICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgV1RGOjpTdHJpbmcgaW5u
ZXJUZXh0U3RyaW5nID0gdG9IVE1MRWxlbWVudChtX2VsZW1lbnQpLT5pbm5lclRleHQoKTsKLSAg
ICAqcmVzdWx0ID0gQlN0cmluZyhpbm5lclRleHRTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgaW5uZXJUZXh0U3RyaW5nLmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJT
dHJpbmcoaW5uZXJUZXh0U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAg
ICAgICAgIApAQCAtNTYxLDcgKzU2MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
SFRNTEZvcm1FbGVtZW50OjphY3Rpb24oCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hU
TUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKICAgICBXVEY6OlN0cmluZyBhY3Rpb25TdHJpbmcg
PSB0b0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpLT5hY3Rpb24oKTsKLSAgICAqcmVzdWx0ID0g
QlN0cmluZyhhY3Rpb25TdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgYWN0aW9uU3RyaW5n
Lmxlbmd0aCgpKS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoYWN0aW9uU3RyaW5n
KS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC01OTEsNyArNTkxLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCgK
IHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTEZvcm1FbGVtZW50KG1fZWxlbWVudCkp
OwogICAgIFdURjo6U3RyaW5nIG1ldGhvZFN0cmluZyA9IHRvSFRNTEZvcm1FbGVtZW50KG1fZWxl
bWVudCktPm1ldGhvZCgpOwotICAgICpyZXN1bHQgPSBCU3RyaW5nKG1ldGhvZFN0cmluZy5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpLCBtZXRob2RTdHJpbmcubGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAg
ICAqcmVzdWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKQEAgLTEyMTAsNyArMTIxMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dmFsdWUoCiAgICAgQVNTRVJUKG1fZWxlbWVudCAm
JiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCk7CiAgICAgV1RGOjpT
dHJpbmcgdmFsdWVTdHJpbmcgPSBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7Ci0gICAgKnJlc3VsdCA9
IEJTdHJpbmcodmFsdWVTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdmFsdWVTdHJpbmcu
bGVuZ3RoKCkpLnJlbGVhc2UoKTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyh2YWx1ZVN0cmluZyku
cmVsZWFzZSgpOwogICAgIGlmICh2YWx1ZVN0cmluZy5sZW5ndGgoKSAmJiAhKnJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xNTQ3LDcg
KzE1NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnZhbHVlKAogICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50
KG1fZWxlbWVudCkpOwogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhRWxlbWVudCA9
IHRvSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpOwogICAgIFdURjo6U3RyaW5nIHZhbHVl
U3RyaW5nID0gdGV4dGFyZWFFbGVtZW50LT52YWx1ZSgpOwotICAgICpyZXN1bHQgPSBCU3RyaW5n
KHZhbHVlU3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHZhbHVlU3RyaW5nLmxlbmd0aCgp
KS5yZWxlYXNlKCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVTdHJpbmcpLnJlbGVhc2Uo
KTsKICAgICBpZiAodmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggZTUyMzczMTFjY2U3NjE2MzkyYjZhMjQ3MTY0OTIy
ZjRjODk0NDI3OS4uMzMyMDAxMThhMWJkNTA1ZGMzOTA3MzdkYjJiZjYwYmFmN2JkMWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC01MSwxMCArNTEsNyBA
QCBCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0IFVSTCYgdXJsKQogCiBD
RlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBDRlN0cmluZ1JlZiBjZlBhdGggPSBDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KDAsIChjb25zdCBVbmlDaGFyKilzdHJpbmcuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAg
ICBDRlVSTFJlZiBwYXRoVVJMID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQ
YXRoLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7Ci0gICAgQ0ZSZWxlYXNlKGNmUGF0
aCk7Ci0gICAgcmV0dXJuIHBhdGhVUkw7CisgICAgcmV0dXJuIENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlLCBmYWxzZSk7CiB9CiAKIFN0cmluZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVD
RlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggM2E0NDQ5
MWE1MDRjZjk2NWRjM2Q0OWEwZTdjYWNiNWY5YTI3MmUwNS4uMzFiYmMwNjIwZWEwMTk4MGI3Zjlm
NGNhMTEzNTBhOTJlMjUxYjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIGlu
dCogbWlzc3BlbGxpbmdMb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdFZpZXdTcGVjaWZp
Y1NwZWxsaW5nKG1fd2ViVmlldyk7Ci0gICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dl
YlZpZXcsIHRleHQudG9TdHJpbmdXaXRob3V0Q29weWluZygpLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3Ro
KTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlz
c3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlucHV0V29yZCkK
QEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAgICAgaW5pdFZp
ZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVtV2ViR3JhbW1h
ckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNoZWNrR3JhbW1h
ck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFt
bWFyTG9jYXRpb24sIGJhZEdyYW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVj
a0dyYW1tYXJPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCks
IHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRH
cmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDVkZDJiYmQ3ZWYyNTMzNzkzZTlhYjJh
OGE2NmI4NmQ1ZTg3ZTcwMWEuLjhmZWU4ZWI0MGU2NDRiMTZkMWU4MTU2ODYyYTdjOGI4MjJkZTg1
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjp1bnJlYWNoYWJsZVVSTCgK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkKIHsKICAgICBVUkwgdW5yZWFjaGFi
bGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKLSAgICBCU3RyaW5nIHVybFN0cmlu
ZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KSwgdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgIEJTdHJpbmcgdXJsU3Ry
aW5nKHVucmVhY2hhYmxlVVJMLnN0cmluZygpKTsKIAogICAgICp1cmwgPSB1cmxTdHJpbmcucmVs
ZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4
IGVjMDYzNGJmMGM5ODJmNjE1ODU2NjNlYTA3MThkYzA5OGMzNTYxMTUuLmQ4MjBjZjU5MDczYzRj
NDU5MmRlODZmNjQ0NmQ3N2E4NGIzMzI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCgKICAgICAgICAgYnVuZGxlLnRydW5jYXRlKDEpOwog
CiAgICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKTsKLSAg
ICAqYnVuZGxlUGF0aCA9IFN5c0FsbG9jU3RyaW5nTGVuKGJ1bmRsZS5kZXByZWNhdGVkQ2hhcmFj
dGVycygpLCBidW5kbGUubGVuZ3RoKCkpOworICAgICpidW5kbGVQYXRoID0gQlN0cmluZyhidW5k
bGUpLnJlbGVhc2UoKTsKICAgICBpZiAoISpidW5kbGVQYXRoKQogICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
CmluZGV4IDBmNmZlZWY4YjkxNzlhODkyNGM5MzQxYTNkZWYxZTFlMTEwZDI0ZTEuLjVkZmJhMjkz
OWFmY2E5OTU5YTRiZTA1ZjFlMzgzNTU3M2U4ZDFjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkQ0ZOZXQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlk
RmluaXNoKCkKICAgICAgICAgCiAgICAgICAgIGJvb2wgcmVwb3J0QnVuZGxlUGF0aEFzRmluYWxQ
YXRoID0gdHJ1ZTsKIAotICAgICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3RpbmF0
aW9uLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIG1fZGVzdGluYXRpb24ubGVuZ3RoKCkpOworICAg
ICAgICBCU3RyaW5nIGRlc3RpbmF0aW9uQlNUUihtX2Rlc3RpbmF0aW9uKTsKICAgICAgICAgaWYg
KEZBSUxFRChtX2RlbGVnYXRlLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSh0aGlzLCBkZXN0aW5hdGlvbkJTVFIpKSkKICAgICAgICAgICAgIExPR19FUlJPUigiZGVsZWdh
dGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCkgZmFpbGVkIik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IGFmZmVhNjc3MDdlMWQ3ZDM1
Y2Q3N2Y4NWNmNTk4MzY0ODhmN2I4MDYuLjI2M2I3NTdkYzA3NGMwNjRhMTE0NDMyMzEwNmQxNGFk
NjViMmNkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMTgwLDcg
KzE4MCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgICAg
IGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CiAgICAg
ICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKLSAgICAgICAgQlN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUJTVFIoc3VnZ2Vz
dGVkRmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3VnZ2VzdGVkRmlsZW5hbWUubGVu
Z3RoKCkpOworICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggNGEwM2I3OGJh
ODA0YmQ4MmY3NmM1OWMyYWI2NTFkZDllOTU3MmQ5MC4uMTMyYWQ5Mzg3ZjA2YmY0NjIxNGZjZmZi
ZWIwZjJhOGUyZGIxOTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRl
c3RSZXN1bHQuaD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKExQQ1dT
VFIgczEsIExQQ1dTVFIgczIpCiBzdGF0aWMgSFJFU1VMVCBjb252ZXJ0U3RyaW5nVG9WYXJpYW50
KFZBUklBTlQqIHBWYXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIFZfVlQocFZhcikg
PSBWVF9CU1RSOwotICAgIFZfQlNUUihwVmFyKSA9IFN5c0FsbG9jU3RyaW5nTGVuKHN0cmluZy5k
ZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIFZfQlNUUihwVmFy
KSA9IEJTdHJpbmcoc3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSAm
JiAhVl9CU1RSKHBWYXIpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IGMzMWZmMDAwOWMxM2EzYzY3YjVmNzRhZjBiNzVlMjA3MWZkMTBh
MzYuLjgwYzYzYTZiY2VmYTM0Y2M2ZTEwZGIyNWZlZGRhZmM5ZGNiYmQwYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlYXJj
aEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCB1bnNpZ25lZCBjTGFi
CiAgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3ZlOwogICAgIFN0cmluZyBsYWJlbCA9IGNvcmVG
cmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVt
ZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAKLSAgICAq
cmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFiZWwuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
bGFiZWwubGVuZ3RoKCkpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGxhYmVsKS5yZWxlYXNlKCk7
CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9P
VVRPRk1FTU9SWTsKICAgICBpZiAob3V0UmVzdWx0RGlzdGFuY2UpCkBAIC0xNDA0LDcgKzE0MDQs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJT
VFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElETwogCiAgICAgU3RyaW5nIGxhYmVsID0gY29yZUZy
YW1lLT5tYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGxhYmVsU3RyaW5ncywgY29yZUVsZW1lbnQp
OwogICAgIAotICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZ0xlbihsYWJlbC5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcobGFi
ZWwpLnJlbGVhc2UoKTsKICAgICBpZiAobGFiZWwubGVuZ3RoKCkgJiYgISpyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJI
aXN0b3J5LmNwcAppbmRleCAyOGFmNmNiZDFkOTA0ZWI4NDYyZWZkNGRmNTdkNzZiYTNkMTlmMTc0
Li4yMThmYTQ0MDI1ZWUzYTNlYjIyZjRkYzExMzFlODEwODJkMGI2NGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5LmNwcApAQCAtNTY1LDggKzU2NSw2IEBAIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+
IFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNv
CiAKIHZvaWQgV2ViSGlzdG9yeTo6YWRkVmlzaXRlZExpbmtzVG9QYWdlR3JvdXAoUGFnZUdyb3Vw
JiBncm91cCkKIHsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2VudHJpZXNCeVVSTC5iZWdpbigpOyBp
dCAhPSBtX2VudHJpZXNCeVVSTC5lbmQoKTsgKytpdCkgewotICAgICAgICBjb25zdCBTdHJpbmcm
IHVybCA9IGl0LT5rZXk7Ci0gICAgICAgIGdyb3VwLmFkZFZpc2l0ZWRMaW5rKHVybC5kZXByZWNh
dGVkQ2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIHVy
bCA6IG1fZW50cmllc0J5VVJMLmtleXMoKSkKKyAgICAgICAgZ3JvdXAuYWRkVmlzaXRlZExpbmtI
YXNoKHZpc2l0ZWRMaW5rSGFzaCh1cmwpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNz
LmNwcAppbmRleCAxNjA5YTUwNTk2NWYwNTk3NjZkMWQzNTBkZDY2NzkxNjYyNzk3ZTJkLi5jNmYy
OTBkYWEyZDI2Zjk1MDA1ZjRlMWQwZmY1NTc2NmNkM2RkM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0R3JhcGhpY3MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0cmluZ1RydW5jYXRvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRleHRSZW5kZXJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC0xMTcsNyArMTE4LDcgQEAgdW5z
aWduZWQgQ2VudGVyVHJ1bmNhdGVTdHJpbmdUb1dpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0
aCwgY29uc3QgV2ViRm9udERlc2MKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2Fj
aGVQdXJnZVByZXZlbnRlcjsKIAogICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmdUcnVuY2F0b3I6
OmNlbnRlclRydW5jYXRlKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3aWR0aCwgbWFrZUZvbnQoZGVz
Y3JpcHRpb24pLCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwotICAgIG1l
bWNweShidWZmZXIsIHJlc3VsdC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCByZXN1bHQubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBTdHJpbmdWaWV3KHJlc3VsdCkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBidWZmZXJbcmVzdWx0Lmxlbmd0aCgpXSA9ICdc
MCc7CiAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGgoKTsKIH0KQEAgLTEyOSw3ICsxMzAsNyBAQCB1
bnNpZ25lZCBSaWdodFRydW5jYXRlU3RyaW5nVG9XaWR0aChMUENUU1RSIHRleHQsIGludCBsZW5n
dGgsIGNvbnN0IFdlYkZvbnREZXNjcgogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRD
YWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZ1RydW5jYXRv
cjo6cmlnaHRUcnVuY2F0ZShTdHJpbmcodGV4dCwgbGVuZ3RoKSwgd2lkdGgsIG1ha2VGb250KGRl
c2NyaXB0aW9uKSwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKLSAgICBt
ZW1jcHkoYnVmZmVyLCByZXN1bHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgcmVzdWx0Lmxlbmd0
aCgpICogc2l6ZW9mKFVDaGFyKSk7CisgICAgU3RyaW5nVmlldyhyZXN1bHQpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAgICAgYnVmZmVyW3Jlc3VsdC5sZW5ndGgoKV0gPSAn
XDAnOwogICAgIHJldHVybiByZXN1bHQubGVuZ3RoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDlmNmJiMWYxMzg1ZmY1NWYwOGYxYWViOTA4YWVkOWFkMGNjZmJjYjQuLjYwNDU4M2JkNjIy
NzhjOGQxZDE0YzJkY2MxZTQxYjY0Y2NmM2Q2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0z
MTc4LDcgKzMxNzgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldEFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIGFwcGxpY2F0aW9uTmFtZSkKIHsKLSAgICAqYXBwbGljYXRpb25OYW1lID0gU3lz
QWxsb2NTdHJpbmdMZW4obV9hcHBsaWNhdGlvbk5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
bV9hcHBsaWNhdGlvbk5hbWUubGVuZ3RoKCkpOworICAgICphcHBsaWNhdGlvbk5hbWUgPSBCU3Ry
aW5nKG1fYXBwbGljYXRpb25OYW1lKS5yZWxlYXNlKCk7CiAgICAgaWYgKCEqYXBwbGljYXRpb25O
YW1lICYmIG1fYXBwbGljYXRpb25OYW1lLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRP
Rk1FTU9SWTsKICAgICByZXR1cm4gU19PSzsKQEAgLTMxOTgsNyArMzE5OCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3VzdG9tVXNlckFnZW50KAogICAgICp1c2VyQWdl
bnRTdHJpbmcgPSAwOwogICAgIGlmICghbV91c2VyQWdlbnRPdmVycmlkZGVuKQogICAgICAgICBy
ZXR1cm4gU19PSzsKLSAgICAqdXNlckFnZW50U3RyaW5nID0gU3lzQWxsb2NTdHJpbmdMZW4obV91
c2VyQWdlbnRDdXN0b20uZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbV91c2VyQWdlbnRDdXN0b20u
bGVuZ3RoKCkpOworICAgICp1c2VyQWdlbnRTdHJpbmcgPSBCU3RyaW5nKG1fdXNlckFnZW50Q3Vz
dG9tKS5yZWxlYXNlKCk7CiAgICAgaWYgKCEqdXNlckFnZW50U3RyaW5nICYmIG1fdXNlckFnZW50
Q3VzdG9tLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTM2NDYsNyArMzY0Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6Z3JvdXBOYW1lKAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gU19P
SzsKICAgICBTdHJpbmcgZ3JvdXBOYW1lU3RyaW5nID0gbV9wYWdlLT5ncm91cE5hbWUoKTsKLSAg
ICAqZ3JvdXBOYW1lID0gU3lzQWxsb2NTdHJpbmdMZW4oZ3JvdXBOYW1lU3RyaW5nLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCksIGdyb3VwTmFtZVN0cmluZy5sZW5ndGgoKSk7CisgICAgKmdyb3VwTmFt
ZSA9IEJTdHJpbmcoZ3JvdXBOYW1lU3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgaWYgKCEqZ3JvdXBO
YW1lICYmIGdyb3VwTmFtZVN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZN
RU1PUlk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0zNzU2LDcgKzM3NTYsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNlbGVjdGVkVGV4dCgKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAogICAgIFN0cmluZyBmcmFtZVNlbGVjdGVkVGV4dCA9IGZvY3VzZWRGcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihmcmFt
ZVNlbGVjdGVkVGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBmcmFtZVNlbGVjdGVkVGV4dC5s
ZW5ndGgoKSk7CisgICAgKnRleHQgPSBCU3RyaW5nKGZyYW1lU2VsZWN0ZWRUZXh0KS5yZWxlYXNl
KCk7CiAgICAgaWYgKCEqdGV4dCAmJiBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC01ODI3LDcgKzU4
MjcsNyBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdFJlY29udmVydFN0cmluZyhGcmFt
ZSogdGFyZ2V0RnJhbWUsIFJFQ09OVkVSVFNUUklORwogICAgIHJlY29udmVydFN0cmluZy0+ZHdT
dHJMZW4gPSB0ZXh0Lmxlbmd0aCgpOwogICAgIHJlY29udmVydFN0cmluZy0+ZHdUYXJnZXRTdHJM
ZW4gPSB0ZXh0Lmxlbmd0aCgpOwogICAgIHJlY29udmVydFN0cmluZy0+ZHdTdHJPZmZzZXQgPSBz
aXplb2YoUkVDT05WRVJUU1RSSU5HKTsKLSAgICBtZW1jcHkocmVjb252ZXJ0U3RyaW5nICsgMSwg
dGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFy
KSk7CisgICAgU3RyaW5nVmlldyh0ZXh0KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChyZWlu
dGVycHJldF9jYXN0PFVDaGFyKj4ocmVjb252ZXJ0U3RyaW5nICsgMSkpOwogICAgIHJldHVybiB0
b3RhbFNpemU7CiB9CiAK
</data>
<flag name="review"
          id="251099"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>