<?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>9538</bug_id>
          
          <creation_ts>2006-06-21 23:18:29 -0700</creation_ts>
          <short_desc>Add support syntax-highlighted HTML source viewing</short_desc>
          <delta_ts>2006-06-27 18:46:13 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>4223</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>46618</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-21 23:18:29 -0700</bug_when>
    <thetext>This bug tracks my work on syntax highlighting of HTML source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46619</commentid>
    <comment_count>1</comment_count>
      <attachid>8958</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-21 23:20:55 -0700</bug_when>
    <thetext>Created attachment 8958
Work in progress

This is a snapshot of a work in progress.  Adds new SPI to WebView for putting the view into a &quot;view source mode&quot;.  This will cause HTML and XML documents loaded in the view to display syntax-highlighted source by default.  The plan is for XML to also do this when it detects it is unstyled and for CSS/JS to do it all the time.

This patch also adds an HTML extension, a viewsource attribute, to iframes and frames, allowing Web site authors (or WebKit applications thate use frames) to show raw syntax-highlighted source as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47324</commentid>
    <comment_count>2</comment_count>
      <attachid>9053</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-26 14:41:57 -0700</bug_when>
    <thetext>Created attachment 9053
Patch that gets basic highlighting working.

This patch gets basic highlighting working.  There are still many open issues, but this is a good first cut to land.

Open issues include:
(1) Loss of the whitespace in between tags and attributes and between attribute names/values.
(2) Entities need to be preserved.
(3) Scripts and styles don&apos;t work.
(4) Comments need to be preserved (this should just be done always).
(5) The DOCTYPE is lost.
(6) The bogus &quot;/&quot; attribute for faux XHTML has to be sent through in view source mode and treated like it&apos;s part of a tag.

... and there are probably numerous other issues...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47327</commentid>
    <comment_count>3</comment_count>
      <attachid>9053</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-26 16:28:52 -0700</bug_when>
    <thetext>Comment on attachment 9053
Patch that gets basic highlighting working.

Darin reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47407</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-06-27 18:46:13 -0700</bug_when>
    <thetext>Committed in r15050</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8958</attachid>
            <date>2006-06-21 23:20:55 -0700</date>
            <delta_ts>2006-06-26 14:41:57 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10916</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0
OTQ3KQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzYsNiArMjc2LDIzIEBACiAJCUVEN0Y2RDhCMDk4MDY4MzUwMEMyMzVFRCAv
KiBXZWJOU0RhdGFFeHRyYXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFRDdGNkQ4QTA5ODA2ODM1MDBDMjM1RUQgLyogV2ViTlNEYXRhRXh0
cmFzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAorLyogQmVnaW4gUEJYQnVpbGRT
dHlsZSBzZWN0aW9uICovCisJCUJDQ0Q3MjlEMEE0QTYwRkYwMDVGREE2RCAvKiBEZXZlbG9wbWVu
dCAqLyA9IHsKKwkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCX07CisJCQluYW1lID0gRGV2ZWxvcG1lbnQ7
CisJCX07CisJCUJDQ0Q3MjlFMEE0QTYwRkYwMDVGREE2RCAvKiBEZXBsb3ltZW50ICovID0gewor
CQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gRGVwbG95bWVudDsKKwkJfTsKKy8q
IEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KKwogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCiAJCTFDMDcwNjYyMEE0MzFFMDEwMDEwNzhGNiAvKiBXZWJTY3JpcHREZWJ1
Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHREZWJ1
Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJMUMwNzA3M0MwQTQzM0JEODAwMTA3OEY2IC8qIFdlYlNjcmlwdERlYnVnU2Vy
dmVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYlNjcmlwdERlYnVn
U2VydmVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwpAQCAtMTIyMiw2ICsxMjM5LDEyIEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4MzIwODkwMkIwRjAwOEE5RUZDIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViS2l0IiAqLzsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQl9OworCQkJYnVpbGRTdHlsZXMgPSAoCisJCQkJQkNDRDcyOUQwQTRBNjBG
RjAwNUZEQTZEIC8qIERldmVsb3BtZW50ICovLAorCQkJCUJDQ0Q3MjlFMEE0QTYwRkYwMDVGREE2
RCAvKiBEZXBsb3ltZW50ICovLAorCQkJKTsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAx
OwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJLaXQvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgJKHJldmlzaW9uIDE0OTQ3KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxOCBAQAogICovCiAtICh2b2lkKV9z
ZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6KE5TQXJyYXkgKiluZXdQYXRoczsKIAorLyohCisg
ICAgQG1ldGhvZCBfc2V0SW5WaWV3U291cmNlTW9kZToKKyAgICBAYWJzdHJhY3QgVXNlZCB0byBw
bGFjZSBhIFdlYlZpZXcgaW50byBhIHNwZWNpYWwgc291cmNlLXZpZXdpbmcgbW9kZS4KKyAgKi8K
Ky0gKHZvaWQpX3NldEluVmlld1NvdXJjZU1vZGU6KEJPT0wpZmxhZzsKKworLyohCisgICAgQG1l
dGhvZCBfaW5WaWV3U291cmNlTW9kZTsKKyAgICBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgdGhl
IFdlYlZpZXcgaXMgaW4gc291cmNlLXZpZXcgbW9kZSBmb3IgSFRNTC4KKyAgKi8KKy0gKEJPT0wp
X2luVmlld1NvdXJjZU1vZGU7CisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3
UHJpbnRpbmdQcml2YXRlKQpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViVmlldy5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYlZpZXcubQkocmV2aXNpb24gMTQ5NDcpCisrKyBXZWJL
aXQvV2ViVmlldy9XZWJWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTE0NTcsNiArMTQ1NywxNiBA
QAogICAgIHJldHVybiBbc2Nyb2xsdmlldyBob3Jpem9udGFsU2Nyb2xsaW5nTW9kZUxvY2tlZF0g
JiYgW3Njcm9sbHZpZXcgaG9yaXpvbnRhbFNjcm9sbGluZ01vZGVdID09IFdlYkNvcmVTY3JvbGxC
YXJBbHdheXNPbjsKIH0KIAorLSAodm9pZClfc2V0SW5WaWV3U291cmNlTW9kZTooQk9PTClmbGFn
Cit7CisgICAgW1tbc2VsZiBtYWluRnJhbWVdIF9icmlkZ2VdIHNldEluVmlld1NvdXJjZU1vZGU6
ZmxhZ107Cit9CisKKy0gKEJPT0wpX2luVmlld1NvdXJjZU1vZGUKK3sKKyAgICByZXR1cm4gW1tb
c2VsZiBtYWluRnJhbWVdIF9icmlkZ2VdIGluVmlld1NvdXJjZU1vZGVdOworfQorCiAtICh2b2lk
KV9zZXRBZGRpdGlvbmFsV2ViUGx1Z0luUGF0aHM6KE5TQXJyYXkgKiluZXdQYXRocwogewogICAg
IGlmICghX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTQ5NDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAKICAgICAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm5vIikpCiAgICAgICAgICAgICBt
X3Njcm9sbGluZyA9IFNjcm9sbEJhckFsd2F5c09mZjsKICAgICAgICAgLy8gRklYTUU6IElmIHdl
IGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCisgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gdmlld3NvdXJjZUF0dHIpIHsKKyAgICAgICAgbV92aWV3U291cmNl
ID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAoY29udGVudEZyYW1lKCkpCisgICAgICAg
ICAgICBjb250ZW50RnJhbWUoKS0+c2V0SW5WaWV3U291cmNlTW9kZSh2aWV3U291cmNlTW9kZSgp
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKSB7CiAgICAgICAg
IHNldEhUTUxFdmVudExpc3RlbmVyKGxvYWRFdmVudCwgYXR0cik7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKSB7CkBAIC0yMTYsNiArMjIwLDkgQEAK
IAogICAgIC8vIGxvYWQgdGhlIGZyYW1lIGNvbnRlbnRzCiAgICAgZnJhbWUtPnJlcXVlc3RGcmFt
ZShzdGF0aWNfY2FzdDxSZW5kZXJGcmFtZSo+KHJlbmRlcmVyKCkpLCByZWxhdGl2ZVVSTCwgbV9u
YW1lKTsKKyAgICAKKyAgICBpZiAoY29udGVudEZyYW1lKCkpCisgICAgICAgIGNvbnRlbnRGcmFt
ZSgpLT5zZXRJblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKCkpOwogfQogCiB2b2lkIEhU
TUxGcmFtZUVsZW1lbnQ6OmNsb3NlKCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxNDk0NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNyArMTIwLDcgQEAKIAogVG9rZW5pemVyICpIVE1MRG9jdW1lbnQ6OmNyZWF0ZVRv
a2VuaXplcigpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVG9rZW5pemVyKHRoaXMpOworICAgIHJl
dHVybiBuZXcgSFRNTFRva2VuaXplcih0aGlzLCBmcmFtZSgpID8gZnJhbWUoKS0+aW5WaWV3U291
cmNlTW9kZSgpIDogZmFsc2UpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFRva2VuaXplci5oCShyZXZpc2lvbiAxNDk0NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5p
emVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAKIGNsYXNzIEhUTUxUb2tlbml6
ZXIgOiBwdWJsaWMgVG9rZW5pemVyLCBwdWJsaWMgQ2FjaGVkT2JqZWN0Q2xpZW50CiB7CiBwdWJs
aWM6Ci0gICAgSFRNTFRva2VuaXplcihEb2N1bWVudCopOworICAgIEhUTUxUb2tlbml6ZXIoRG9j
dW1lbnQqLCBib29sIHNvdXJjZU1vZGUpOwogICAgIEhUTUxUb2tlbml6ZXIoRG9jdW1lbnRGcmFn
bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxUb2tlbml6ZXIoKTsKIApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9r
ZW5pemVyLmNwcAkocmV2aXNpb24gMTQ5NDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw4ICsxMTksOSBAQAogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLUhUTUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIoRG9jdW1lbnQqIGRvYykK
LSAgICA6IGJ1ZmZlcigwKQorSFRNTFRva2VuaXplcjo6SFRNTFRva2VuaXplcihEb2N1bWVudCog
ZG9jLCBib29sIHZpZXdTb3VyY2VNb2RlKQorICAgIDogVG9rZW5pemVyKHZpZXdTb3VyY2VNb2Rl
KQorICAgICwgYnVmZmVyKDApCiAgICAgLCBzY3JpcHRDb2RlKDApCiAgICAgLCBzY3JpcHRDb2Rl
U2l6ZSgwKQogICAgICwgc2NyaXB0Q29kZU1heFNpemUoMCkKQEAgLTEyOCwxMCArMTI5LDEyIEBA
CiAgICAgLCBtX2V4ZWN1dGluZ1NjcmlwdCgwKQogICAgICwgbV90aW1lcih0aGlzLCAmSFRNTFRv
a2VuaXplcjo6dGltZXJGaXJlZCkKICAgICAsIG1fZG9jKGRvYykKKyAgICAsIHBhcnNlcigwKQog
ICAgICwgaW5Xcml0ZShmYWxzZSkKICAgICAsIG1fZnJhZ21lbnQoZmFsc2UpCiB7Ci0gICAgcGFy
c2VyID0gbmV3IEhUTUxQYXJzZXIoZG9jKTsKKyAgICBpZiAoIXZpZXdTb3VyY2VNb2RlKQorICAg
ICAgICBwYXJzZXIgPSBuZXcgSFRNTFBhcnNlcihkb2MpOwogICAgIGJlZ2luKCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAkocmV2aXNpb24gMTQ5NDcpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBACiAg
ICAgaW50IGZyYW1lV2lkdGgoKSBjb25zdDsKICAgICBpbnQgZnJhbWVIZWlnaHQoKSBjb25zdDsK
IAorICAgIGJvb2wgdmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTb3VyY2U7
IH0KKwogcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVUkxBbGxvd2VkKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBvcGVuVVJMKCk7CkBAIC0xMTIsNiArMTE0LDcg
QEAKICAgICBib29sIG1fZnJhbWVCb3JkZXIgOiAxOwogICAgIGJvb2wgbV9mcmFtZUJvcmRlclNl
dCA6IDE7CiAgICAgYm9vbCBtX25vUmVzaXplIDogMTsKKyAgICBib29sIG1fdmlld1NvdXJjZSA6
IDE7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0
T2JqZWN0LmNwcAkocmV2aXNpb24gMTQ5NDcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw4IEBACiAgICAgICAg
ICAgdXJsID0gImFib3V0OmJsYW5rIjsKICAgICAgIEZyYW1lVmlldyogdiA9IHN0YXRpY19jYXN0
PEZyYW1lVmlldyo+KG1fdmlldyk7CiAgICAgICB2LT5mcmFtZSgpLT5yZXF1ZXN0RnJhbWUodGhp
cywgdXJsLCBvLT5tX25hbWUpOworICAgICAgaWYgKG8tPmNvbnRlbnRGcmFtZSgpKQorICAgICAg
ICAgIG8tPmNvbnRlbnRGcmFtZSgpLT5zZXRJblZpZXdTb3VyY2VNb2RlKG8tPnZpZXdTb3VyY2VN
b2RlKCkpOwogICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL3htbF90b2tlbml6ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS94bWxfdG9rZW5pemVyLmgJKHJldmlzaW9uIDE0OTQ3KQor
KysgV2ViQ29yZS9kb20veG1sX3Rva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICsz
OSwxMiBAQAogY2xhc3MgVG9rZW5pemVyCiB7CiBwdWJsaWM6Ci0gICAgVG9rZW5pemVyKCkgOiBt
X3BhcnNlclN0b3BwZWQoZmFsc2UpIHsgfQotICAgIHZpcnR1YWwgflRva2VuaXplcigpIHsgfQor
ICAgIFRva2VuaXplcihib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpIAorICAgIDogbV9wYXJz
ZXJTdG9wcGVkKGZhbHNlKQorICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2Rl
KQorICAgIHt9CisgICAgCisgICAgdmlydHVhbCB+VG9rZW5pemVyKCkge30KIAogICAgIC8vIFNj
cmlwdCBvdXRwdXQgbXVzdCBiZSBwcmVwZW5kZWQsIHdoaWxlIG5ldyBkYXRhCiAgICAgLy8gcmVj
ZWl2ZWQgZHVyaW5nIGV4ZWN1dGluZyBhIHNjcmlwdCBtdXN0IGJlIGFwcGVuZGVkLCBoZW5jZSB0
aGUKQEAgLTU2LDExICs2MCwxNiBAQAogICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKKyAgICBib29s
IGluVmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luVmlld1NvdXJjZU1vZGU7IH0K
KyAgICB2b2lkIHNldEluVmlld1NvdXJjZU1vZGUoYm9vbCBtb2RlKSB7IG1faW5WaWV3U291cmNl
TW9kZSA9IG1vZGU7IH0KKwogcHJvdGVjdGVkOgogICAgIC8vIFRoZSB0b2tlbml6ZXIgaGFzIGJ1
ZmZlcnMsIHNvIHBhcnNpbmcgbWF5IGNvbnRpbnVlIGV2ZW4gYWZ0ZXIKICAgICAvLyBpdCBzdG9w
cyByZWNlaXZpbmcgZGF0YS4gV2UgdXNlIG1fcGFyc2VyU3RvcHBlZCB0byBzdG9wIHRoZSB0b2tl
bml6ZXIKICAgICAvLyBldmVuIHdoZW4gaXQgaGFzIGJ1ZmZlcmVkIGRhdGEuCiAgICAgYm9vbCBt
X3BhcnNlclN0b3BwZWQ7CisgICAgCisgICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7CiB9Owog
CiBUb2tlbml6ZXIqIG5ld1hNTFRva2VuaXplcihEb2N1bWVudCosIEZyYW1lVmlldyogPSAwKTsK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24g
MTQ5NDcpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTg0LDYgKzI1ODQsMTYgQEAKICAgICByZXR1cm4gbV9mcmFtZS0+Y29u
dGFpbnNQbHVnaW5zKCk7CiB9CiAKKy0gKHZvaWQpc2V0SW5WaWV3U291cmNlTW9kZTooQk9PTClm
bGFnCit7CisgICAgbV9mcmFtZS0+c2V0SW5WaWV3U291cmNlTW9kZShmbGFnKTsKK30KKworLSAo
Qk9PTClpblZpZXdTb3VyY2VNb2RlCit7CisgICAgcmV0dXJuIG1fZnJhbWUtPmluVmlld1NvdXJj
ZU1vZGUoKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZyYW1lQnJpZGdl
IChXZWJDb3JlQnJpZGdlSW50ZXJuYWwpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29y
ZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVG
cmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNDk0NykKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJD
b3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDYgKzQ5MywxMCBAQAogLSAo
Qk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2U7CiAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hp
dmU7CiAtIChCT09MKWNvbnRhaW5zUGx1Z2luczsKKworLSAodm9pZClzZXRJblZpZXdTb3VyY2VN
b2RlOihCT09MKWZsYWc7CistIChCT09MKWluVmlld1NvdXJjZU1vZGU7CisKIEBlbmQKIAogLy8g
VGhlIFdlYkNvcmVGcmFtZUJyaWRnZSBwcm90b2NvbCBjb250YWlucyBtZXRob2RzIGZvciB1c2Ug
YnkgdGhlIFdlYkNvcmUgc2lkZSBvZiB0aGUgYnJpZGdlLgpJbmRleDogV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDE0OTQ3
KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw2ICs0NTIs
OSBAQAogCiAgIHZpcnR1YWwgdm9pZCB0b2tlbml6ZXJQcm9jZXNzZWREYXRhKCkge30KIAorICBi
b29sIGluVmlld1NvdXJjZU1vZGUoKSBjb25zdDsKKyAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2Rl
KGJvb2wgPSB0cnVlKSBjb25zdDsKKwogICBjb25zdCBLSFRNTFNldHRpbmdzKiBzZXR0aW5ncygp
IGNvbnN0OwogCiAgIHZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0KGNvbnN0IFN0cmluZyYpOwpJbmRl
eDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCShyZXZpc2lvbiAxNDk0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzNDksNiArMzM0OSwxNiBAQAogICAgICAgICBkb2MtPmRpc3BhdGNoV2lu
ZG93RXZlbnQoZmxhZyA/IGZvY3VzRXZlbnQgOiBibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiB9
CiAKK2Jvb2wgRnJhbWU6OmluVmlld1NvdXJjZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5tX2luVmlld1NvdXJjZU1vZGU7Cit9CisKK3ZvaWQgRnJhbWU6OnNldEluVmlld1NvdXJjZU1v
ZGUoYm9vbCBtb2RlKSBjb25zdAoreworICAgIGQtPm1faW5WaWV3U291cmNlTW9kZSA9IG1vZGU7
Cit9CisgIAogVUNoYXIgRnJhbWU6OmJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdAog
ewogICAgIERvY3VtZW50ICpkb2MgPSBkb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Zy
YW1lUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUuaAko
cmV2aXNpb24gMTQ5NDcpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQAogICAgICAgICAgICAgLCBtX21hcmtlZFRleHRVc2Vz
VW5kZXJsaW5lcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9oaWdobGlnaHRUZXh0TWF0Y2hlcyhm
YWxzZSkKICAgICAgICAgICAgICwgbV93aW5kb3dIYXNGb2N1cyhmYWxzZSkKKyAgICAgICAgICAg
ICwgbV9pblZpZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICAgICAgICAgLCBmcmFtZUNvdW50KDAp
CiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMjI1LDYgKzIyNiw4IEBACiAgICAgICAgIGJvb2wg
bV9oaWdobGlnaHRUZXh0TWF0Y2hlczsKICAgICAgICAgYm9vbCBtX3dpbmRvd0hhc0ZvY3VzOwog
ICAgICAgICAKKyAgICAgICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7CisKICAgICAgICAgdW5z
aWduZWQgZnJhbWVDb3VudDsKICAgICB9OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9053</attachid>
            <date>2006-06-26 14:41:57 -0700</date>
            <delta_ts>2006-06-26 16:28:52 -0700</delta_ts>
            <desc>Patch that gets basic highlighting working.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>41206</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IERlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gMTQ5NDcpCisrKyBEZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTAsNyArMjEwLDcgQEAKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwogCi1V
U0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9ICQoV2ViQ29yZSkvY3NzL2h0bWw0LmNzcyAkKFdlYkNv
cmUpL2Nzcy9xdWlya3MuY3NzICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3MgCitVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUyA9ICQoV2ViQ29yZSkvY3NzL2h0bWw0LmNzcyAkKFdlYkNvcmUpL2Nzcy9xdWly
a3MuY3NzICQoV2ViQ29yZSkvY3NzL3ZpZXctc291cmNlLmNzcyAkKFdlYkNvcmUpL2Nzcy9zdmcu
Y3NzIAogVXNlckFnZW50U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5w
bCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCXBlcmwgJDwgJEAgVXNlckFnZW50U3R5bGVT
aGVldHNEYXRhLmNwcCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCkluZGV4OiBodG1sL0hU
TUxWaWV3U291cmNlRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuaAkocmV2aXNpb24gMCkKKysrIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpZm5kZWYgSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudF9oCisjZGVmaW5lIEhUTUxWaWV3U291cmNlRG9jdW1lbnRfaAorCisjaW5jbHVk
ZSAiSFRNTERvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NSW1w
bGVtZW50YXRpb247CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBUb2tlbjsKK2NsYXNzIEF0dHJp
YnV0ZTsKKworY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1l
bnQKK3sKK3B1YmxpYzoKKyAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KERPTUltcGxlbWVudGF0
aW9uKiwgRnJhbWVWaWV3KiA9IDApOworICAgIAorICAgIHZpcnR1YWwgVG9rZW5pemVyKiBjcmVh
dGVUb2tlbml6ZXIoKTsKKyAgICAKKyAgICB2b2lkIGFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiop
OworICAgIHZvaWQgYWRkVmlld1NvdXJjZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICAKK3By
aXZhdGU6CisgICAgRWxlbWVudCogYWRkU3BhbldpdGhDbGFzc05hbWUoY29uc3QgU3RyaW5nJik7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudDsKK307CisKK30KKworI2Vu
ZGlmIC8vIEhUTUxWaWV3U291cmNlRG9jdW1lbnRfaApJbmRleDogaHRtbC9IVE1MVmlld1NvdXJj
ZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAwKQorKysgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxUb2tlbml6
ZXIuaCIKKyNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQm9keUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUHJlRWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHQuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUKK3sKKwordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKworSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRNTFZpZXdT
b3VyY2VEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW1wbGVtZW50YXRpb24sIEZyYW1lVmll
dyogdikKKyAgICA6IEhUTUxEb2N1bWVudChpbXBsZW1lbnRhdGlvbiwgdiksIG1fY3VycmVudCgw
KQoreworfQorCitUb2tlbml6ZXIqIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVRva2Vu
aXplcigpCit7CisgICAgcmV0dXJuIG5ldyBIVE1MVG9rZW5pemVyKHRoaXMsIHRydWUpOworfQor
Cit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiog
dG9rZW4pCit7CisgICAgaWYgKCFtX2N1cnJlbnQpIHsKKyAgICAgICAgLy8gR28gYWhlYWQgYW5k
IGNyZWF0ZSBvdXIgPGh0bWw+IGFuZCA8Ym9keT4KKyAgICAgICAgRWxlbWVudCogaHRtbCA9IG5l
dyBIVE1MSHRtbEVsZW1lbnQodGhpcyk7CisgICAgICAgIGFkZENoaWxkKGh0bWwpOworICAgICAg
ICBodG1sLT5hdHRhY2goKTsKKyAgICAgICAgRWxlbWVudCogYm9keSA9IG5ldyBIVE1MQm9keUVs
ZW1lbnQodGhpcyk7CisgICAgICAgIGh0bWwtPmFkZENoaWxkKGJvZHkpOworICAgICAgICBib2R5
LT5hdHRhY2goKTsKKyAgICAgICAgRWxlbWVudCogcHJlID0gbmV3IEhUTUxQcmVFbGVtZW50KHBy
ZVRhZywgdGhpcyk7CisgICAgICAgIGJvZHktPmFkZENoaWxkKHByZSk7CisgICAgICAgIHByZS0+
YXR0YWNoKCk7CisgICAgICAgIG1fY3VycmVudCA9IHByZTsKKyAgICB9CisgICAgCisgICAgaWYg
KHRva2VuLT50YWdOYW1lID09IHRleHRBdG9tKSB7CisgICAgICAgIFRleHQqIHQgPSBuZXcgVGV4
dCh0aGlzLCB0b2tlbi0+dGV4dC5nZXQoKSk7CisgICAgICAgIG1fY3VycmVudC0+YWRkQ2hpbGQo
dCk7CisgICAgICAgIHQtPmF0dGFjaCgpOworICAgIH0gZWxzZSBpZiAodG9rZW4tPnRhZ05hbWUg
PT0gY29tbWVudEF0b20pIHsKKyAgICAKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBIYW5kbGUg
dGhlIHRhZy4KKyAgICAgICAgRWxlbWVudCogc3BhbiA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3
ZWJraXQtaHRtbC10YWciKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAiPCI7CisgICAgICAgIGlm
ICghdG9rZW4tPmJlZ2luVGFnKQorICAgICAgICAgICAgdGV4dCArPSAiLyI7CisgICAgICAgIHRl
eHQgKz0gdG9rZW4tPnRhZ05hbWU7CisgICAgICAgIGlmICghdG9rZW4tPmF0dHJzKQorICAgICAg
ICAgICAgdGV4dCArPSAiPiI7CisgICAgICAgIFRleHQqIHQgPSBuZXcgVGV4dCh0aGlzLCB0ZXh0
KTsKKyAgICAgICAgc3Bhbi0+YWRkQ2hpbGQodCk7CisgICAgICAgIHQtPmF0dGFjaCgpOworICAg
ICAgICAKKyAgICAgICAgLy8gTm93IGhhbmRsZSBhdHRyaWJ1dGVzLgorICAgICAgICBpZiAodG9r
ZW4tPmF0dHJzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9rZW4t
PmF0dHJzLT5sZW5ndGgoKTsgaSsrKQorICAgICAgICAgICAgICAgIGFkZFZpZXdTb3VyY2VBdHRy
aWJ1dGUodG9rZW4tPmF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpKTsKKyAgICAgICAgCisgICAgICAg
ICAgICBzcGFuID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1sLXRhZyIpOworICAg
ICAgICAgICAgdCA9IG5ldyBUZXh0KHRoaXMsICI+Iik7CisgICAgICAgICAgICBzcGFuLT5hZGRD
aGlsZCh0KTsKKyAgICAgICAgICAgIHQtPmF0dGFjaCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgIH0KK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICAvLyBGSVhNRTogRG9uJ3QganVzdCBoYXJk
LWNvZGUgdGhlIHdoaXRlc3BhY2UgYmV0d2VlbiBhdHRyaWJ1dGUgdmFsdWVzLgorICAgIFRleHQq
IHQgPSBuZXcgVGV4dCh0aGlzLCAiICIpOworICAgIG1fY3VycmVudC0+YWRkQ2hpbGQodCk7Cisg
ICAgdC0+YXR0YWNoKCk7CisgICAgCisgICAgLy8gQXR0cmlidXRlIG5hbWUuCisgICAgLy8gRklY
TUU6IExvc2luZyB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIG5hbWUgYW5kIHRoZSA9IHNpZ24gYW5k
IGJldHdlZW4gdGhlID0gc2lnbiBhbmQgdGhlIHZhbHVlLgorICAgIEVsZW1lbnQqIHNwYW4gPSBh
ZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKKyAgICBT
dHJpbmcgbmFtZSA9IGF0dHItPm5hbWUoKS50b1N0cmluZygpOworICAgIGlmICghYXR0ci0+dmFs
dWUoKS5pc051bGwoKSkKKyAgICAgICAgbmFtZSArPSAiPSI7CisgICAgdCA9IG5ldyBUZXh0KHRo
aXMsIG5hbWUpOworICAgIHNwYW4tPmFkZENoaWxkKHQpOworICAgIHQtPmF0dGFjaCgpOworICAg
IAorICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZS4KKyAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNOdWxs
KCkpIHsKKyAgICAgICAgRWxlbWVudCogc3BhbiA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJr
aXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUiKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAiXCIiOyAv
LyBGSVhNRTogRG9uJ3QgYXNzdW1lIHRoZSBhdHRyIGlzIHF1b3RlZC4KKyAgICAgICAgdGV4dCAr
PSBhdHRyLT52YWx1ZSgpOworICAgICAgICB0ZXh0ICs9ICJcIiI7CisgICAgICAgIHQgPSBuZXcg
VGV4dCh0aGlzLCB0ZXh0KTsKKyAgICAgICAgc3Bhbi0+YWRkQ2hpbGQodCk7CisgICAgICAgIHQt
PmF0dGFjaCgpOworICAgIH0KK30KKworRWxlbWVudCogSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6
YWRkU3BhbldpdGhDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpCit7CisgICAgRWxl
bWVudCogc3BhbiA9IG5ldyBIVE1MRWxlbWVudChzcGFuVGFnLCB0aGlzKTsKKyAgICBBdHRyaWJ1
dGUqIGEgPSBuZXcgTWFwcGVkQXR0cmlidXRlKGNsYXNzQXR0ciwgY2xhc3NOYW1lKTsKKyAgICBO
YW1lZE1hcHBlZEF0dHJNYXAqIGF0dHJzID0gbmV3IE5hbWVkTWFwcGVkQXR0ck1hcCgwKTsKKyAg
ICBhdHRycy0+aW5zZXJ0QXR0cmlidXRlKGEpOyAgIAorICAgIHNwYW4tPnNldEF0dHJpYnV0ZU1h
cChhdHRycyk7ICAgICAKKyAgICBtX2N1cnJlbnQtPmFkZENoaWxkKHNwYW4pOworICAgIHNwYW4t
PmF0dGFjaCgpOworICAgIHJldHVybiBzcGFuOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBo
dG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDk0NykKKysrIGh0bWwvSFRNTEZy
YW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICBtX21h
cmdpbkhlaWdodCA9IC0xOwogICAgIG1fc2Nyb2xsaW5nID0gU2Nyb2xsQmFyQXV0bzsKICAgICBt
X25vUmVzaXplID0gZmFsc2U7CisgICAgbV92aWV3U291cmNlID0gZmFsc2U7CiB9CiAKIEhUTUxG
cmFtZUVsZW1lbnQ6On5IVE1MRnJhbWVFbGVtZW50KCkKQEAgLTE1Nyw2ICsxNTgsMTAgQEAKICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm5vIikpCiAg
ICAgICAgICAgICBtX3Njcm9sbGluZyA9IFNjcm9sbEJhckFsd2F5c09mZjsKICAgICAgICAgLy8g
RklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmlld3NvdXJjZUF0dHIpIHsKKyAgICAgICAg
bV92aWV3U291cmNlID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAoY29udGVudEZyYW1l
KCkpCisgICAgICAgICAgICBjb250ZW50RnJhbWUoKS0+c2V0SW5WaWV3U291cmNlTW9kZSh2aWV3
U291cmNlTW9kZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRy
KSB7CiAgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGxvYWRFdmVudCwgYXR0cik7CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKSB7CkBAIC0yMTYs
NiArMjIxLDkgQEAKIAogICAgIC8vIGxvYWQgdGhlIGZyYW1lIGNvbnRlbnRzCiAgICAgZnJhbWUt
PnJlcXVlc3RGcmFtZShzdGF0aWNfY2FzdDxSZW5kZXJGcmFtZSo+KHJlbmRlcmVyKCkpLCByZWxh
dGl2ZVVSTCwgbV9uYW1lKTsKKyAgICAKKyAgICBpZiAoY29udGVudEZyYW1lKCkpCisgICAgICAg
IGNvbnRlbnRGcmFtZSgpLT5zZXRJblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKCkpOwog
fQogCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OmNsb3NlKCkKSW5kZXg6IGh0bWwvSFRNTERvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMTQ5NDcp
CisrKyBodG1sL0hUTUxEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiAKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEhUTUxFbGVtZW50OworY2xhc3MgVG9rZW47CiAK
IGNsYXNzIEhUTUxEb2N1bWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEb2N1bWVudCwgcHVibGljIFdl
YkNvcmU6OkNhY2hlZE9iamVjdENsaWVudAogewpJbmRleDogaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ5NDcpCisr
KyBodG1sL0hUTUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBA
QAogCiBUb2tlbml6ZXIgKkhUTUxEb2N1bWVudDo6Y3JlYXRlVG9rZW5pemVyKCkKIHsKLSAgICBy
ZXR1cm4gbmV3IEhUTUxUb2tlbml6ZXIodGhpcyk7CisgICAgcmV0dXJuIG5ldyBIVE1MVG9rZW5p
emVyKHRoaXMsIGZhbHNlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IGh0bWwv
SFRNTFRva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTFRva2VuaXplci5oCShyZXZp
c2lvbiAxNDk0NykKKysrIGh0bWwvSFRNTFRva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw3ICs3OSw3IEBACiBjbGFzcyBIVE1MVG9rZW5pemVyIDogcHVibGljIFRva2VuaXplciwgcHVi
bGljIENhY2hlZE9iamVjdENsaWVudAogewogcHVibGljOgotICAgIEhUTUxUb2tlbml6ZXIoRG9j
dW1lbnQqKTsKKyAgICBIVE1MVG9rZW5pemVyKERvY3VtZW50KiwgYm9vbCBzb3VyY2VNb2RlKTsK
ICAgICBIVE1MVG9rZW5pemVyKERvY3VtZW50RnJhZ21lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1M
VG9rZW5pemVyKCk7CiAKSW5kZXg6IGh0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gMTQ5NDcpCisrKyBodG1sL0hUTUxU
b2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIkhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKICNpbmNsdWRlICJjc3NoZWxw
ZXIuaCIKQEAgLTExOSw4ICsxMjAsOSBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhU
TUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIoRG9jdW1lbnQqIGRvYykKLSAgICA6IGJ1ZmZlcigw
KQorSFRNTFRva2VuaXplcjo6SFRNTFRva2VuaXplcihEb2N1bWVudCogZG9jLCBib29sIHZpZXdT
b3VyY2VNb2RlKQorICAgIDogVG9rZW5pemVyKHZpZXdTb3VyY2VNb2RlKQorICAgICwgYnVmZmVy
KDApCiAgICAgLCBzY3JpcHRDb2RlKDApCiAgICAgLCBzY3JpcHRDb2RlU2l6ZSgwKQogICAgICwg
c2NyaXB0Q29kZU1heFNpemUoMCkKQEAgLTEyOCwxMCArMTMwLDEyIEBACiAgICAgLCBtX2V4ZWN1
dGluZ1NjcmlwdCgwKQogICAgICwgbV90aW1lcih0aGlzLCAmSFRNTFRva2VuaXplcjo6dGltZXJG
aXJlZCkKICAgICAsIG1fZG9jKGRvYykKKyAgICAsIHBhcnNlcigwKQogICAgICwgaW5Xcml0ZShm
YWxzZSkKICAgICAsIG1fZnJhZ21lbnQoZmFsc2UpCiB7Ci0gICAgcGFyc2VyID0gbmV3IEhUTUxQ
YXJzZXIoZG9jKTsKKyAgICBpZiAoIXZpZXdTb3VyY2VNb2RlKQorICAgICAgICBwYXJzZXIgPSBu
ZXcgSFRNTFBhcnNlcihkb2MpOwogICAgIGJlZ2luKCk7CiB9CiAKQEAgLTMzMiwxOCArMzM2LDE4
IEBACiAKICAgICAvLyAoQnVnemlsbGEgMzgzNykgU2NyaXB0cyBmb2xsb3dpbmcgYSBmcmFtZXNl
dCBlbGVtZW50IHNob3VsZCBub3QgZXhlY3V0ZSBvciwgCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2Yg
ZXh0ZXJuIHNjcmlwdHMsIGV2ZW4gbG9hZC4KLSAgICBib29sIGZvbGxvd2luZ0ZyYW1lc2V0ID0g
KHBhcnNlci0+ZG9jKCktPmJvZHkoKSAmJiBwYXJzZXItPmRvYygpLT5ib2R5KCktPmhhc1RhZ05h
bWUoZnJhbWVzZXRUYWcpKTsKKyAgICBib29sIGZvbGxvd2luZ0ZyYW1lc2V0ID0gKG1fZG9jLT5i
b2R5KCkgJiYgbV9kb2MtPmJvZHkoKS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpOwogICAKICAg
ICBDYWNoZWRTY3JpcHQqIGNzID0gMDsKICAgICAvLyBkb24ndCBsb2FkIGV4dGVybmFsIHNjcmlw
dHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzIChmb3Igbm93KQotICAgIGlmICghc2NyaXB0U3Jj
LmlzRW1wdHkoKSAmJiBwYXJzZXItPmRvYygpLT5mcmFtZSgpKSB7CisgICAgaWYgKCFzY3JpcHRT
cmMuaXNFbXB0eSgpICYmIG1fZG9jLT5mcmFtZSgpKSB7CiAgICAgICAgIC8vIGZvcmdldCB3aGF0
IHdlIGp1c3QgZ290OyBsb2FkIGZyb20gc3JjIHVybCBpbnN0ZWFkCiAgICAgICAgIGlmICghcGFy
c2VyLT5za2lwTW9kZSgpICYmICFmb2xsb3dpbmdGcmFtZXNldCkgewogI2lmIElOU1RSVU1FTlRf
TEFZT1VUX1NDSEVEVUxJTkcKLSAgICAgICAgICAgIGlmICghcGFyc2VyLT5kb2MoKS0+b3duZXJF
bGVtZW50KCkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0aW5nIHNjcmlwdCBhdCB0
aW1lICVkXG4iLCBwYXJzZXItPmRvYygpLT5lbGFwc2VkVGltZSgpKTsKKyAgICAgICAgICAgIGlm
ICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHByaW50ZigiUmVxdWVz
dGluZyBzY3JpcHQgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlm
Ci0gICAgICAgICAgICBpZiAoIChjcyA9IHBhcnNlci0+ZG9jKCktPmRvY0xvYWRlcigpLT5yZXF1
ZXN0U2NyaXB0KHNjcmlwdFNyYywgc2NyaXB0U3JjQ2hhcnNldCkgKSkKKyAgICAgICAgICAgIGlm
ICggKGNzID0gbV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNjcmlwdFNyYywgc2Ny
aXB0U3JjQ2hhcnNldCkgKSkKICAgICAgICAgICAgICAgICBwZW5kaW5nU2NyaXB0cy5lbnF1ZXVl
KGNzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzY3JpcHROb2RlID0gMDsK
QEAgLTQ0Niw4ICs0NTAsOCBAQAogICAgIGN1cnJlbnRQcmVwZW5kaW5nU3JjID0gJnByZXBlbmRp
bmdTcmM7CiAKICNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgaWYgKCFwYXJz
ZXItPmRvYygpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJiZWdpbm5pbmcgc2Ny
aXB0IGV4ZWN1dGlvbiBhdCAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7Cisg
ICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIHByaW50ZigiYmVnaW5uaW5n
IHNjcmlwdCBleGVjdXRpb24gYXQgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRp
ZgogCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwpAQCAtNDU3LDggKzQ2MSw4IEBACiAgICAgc3RhdGUu
c2V0QWxsb3dZaWVsZCh0cnVlKTsKIAogI2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcK
LSAgICBpZiAoIXBhcnNlci0+ZG9jKCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYo
ImVuZGluZyBzY3JpcHQgZXhlY3V0aW9uIGF0ICVkXG4iLCBwYXJzZXItPmRvYygpLT5lbGFwc2Vk
VGltZSgpKTsKKyAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgcHJpbnRm
KCJlbmRpbmcgc2NyaXB0IGV4ZWN1dGlvbiBhdCAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkp
OwogI2VuZGlmCiAgICAgCiAgICAgbV9leGVjdXRpbmdTY3JpcHQtLTsKQEAgLTc4OCw3ICs3OTIs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4IGJ1ZyAzNDMwMiBhdCBrZGUuYnVn
cy5vcmcuICBHbyBhaGVhZCBhbmQgdHJlYXQKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwh
LS0+IGFzIGEgdmFsaWQgY29tbWVudCwgc2luY2UgYm90aCBtb3ppbGxhIGFuZCBJRSBvbiB3aW5k
b3dzCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gaGFuZGxlIHRoaXMgY2FzZS4gIE9u
bHkgZG8gdGhpcyBpbiBxdWlya3MgbW9kZS4gLWR3aAotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFzcmMuaXNFbXB0eSgpICYmICpzcmMgPT0gJz4nICYmIHBhcnNlci0+ZG9jKCktPmluQ29t
cGF0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNyYy5pc0VtcHR5KCkg
JiYgKnNyYyA9PSAnPicgJiYgbV9kb2MtPmluQ29tcGF0TW9kZSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLnNldEluQ29tbWVudChmYWxzZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsrc3JjOwogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNyYy5pc0Vt
cHR5KCkpCkBAIC04MjAsNyArODI0LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgLy8gdG9sb3dlcigpIHNob3dzIHVwIG9uIHByb2ZpbGVz
LiBUaGlzIGlzIGZhc3RlciEKLSAgICAgICAgICAgICAgICBpZiAoY3VyY2hhciA+PSAnQScgJiYg
Y3VyY2hhciA8PSAnWicpCisgICAgICAgICAgICAgICAgaWYgKGN1cmNoYXIgPj0gJ0EnICYmIGN1
cmNoYXIgPD0gJ1onICYmICFpblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAg
IGNCdWZmZXJbY0J1ZmZlclBvcysrXSA9IGN1cmNoYXIgKyAoJ2EnIC0gJ0EnKTsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNCdWZmZXJbY0J1ZmZlclBvcysrXSA9
IGN1cmNoYXI7CkBAIC04NDUsNyArODQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYmVnaW5U
YWcgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHRoZSAvIGluIGZha2UgeG1s
IHRhZ3MgbGlrZSA8YnIvPi4gIFdlIHRyaW0gb2ZmIHRoZSAiLyIgc28gdGhhdCB3ZSdsbCBnZXQg
ImJyIiBhcyB0aGUgdGFnIG5hbWUgYW5kIG5vdCAiYnIvIi4KLSAgICAgICAgICAgICAgICBpZiAo
bGVuID4gMSAmJiBwdHJbbGVuLTFdID09ICcvJykKKyAgICAgICAgICAgICAgICBpZiAobGVuID4g
MSAmJiBwdHJbbGVuLTFdID09ICcvJyAmJiAhaW5WaWV3U291cmNlTW9kZSgpKQogICAgICAgICAg
ICAgICAgICAgICBwdHJbLS1sZW5dID0gJ1wwJzsKIAogICAgICAgICAgICAgICAgIC8vIE5vdyB0
aGF0IHdlJ3ZlIHNoYXZlZCBvZmYgYW55IGludmFsaWQgLyB0aGF0IG1pZ2h0IGhhdmUgZm9sbG93
ZWQgdGhlIG5hbWUpLCBtYWtlIHRoZSB0YWcuCkBAIC05MzUsNyArOTM5LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICsrc3JjOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRva2VuLmFkZEF0
dHJpYnV0ZShwYXJzZXItPmRvYygpLCBhdHRyTmFtZSwgZW1wdHlBdG9tKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJUb2tlbi5hZGRBdHRyaWJ1dGUobV9kb2MsIGF0dHJOYW1lLCBlbXB0
eUF0b20pOwogICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLnNldFRhZ1N0YXRlKFNlYXJjaEF0dHJpYnV0ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTk4MCw3ICs5ODQsNyBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdC0tOyAvLyByZW1vdmUgdHJhaWxpbmcgbmV3bGluZXMKICAgICAgICAgICAgICAg
ICAgICAgQXRvbWljU3RyaW5nIHYoYnVmZmVyKzEsIGRlc3QtYnVmZmVyLTEpOwogICAgICAgICAg
ICAgICAgICAgICBhdHRyTmFtZSA9IHY7IC8vIEp1c3QgbWFrZSB0aGUgbmFtZS92YWx1ZSBtYXRj
aC4gKEZJWE1FOiBJcyB0aGlzIHNvbWUgV2luSUUgcXVpcms/KQotICAgICAgICAgICAgICAgICAg
ICBjdXJyVG9rZW4uYWRkQXR0cmlidXRlKHBhcnNlci0+ZG9jKCksIGF0dHJOYW1lLCB2KTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VyclRva2VuLmFkZEF0dHJpYnV0ZShtX2RvYywgYXR0ck5hbWUs
IHYpOwogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zZXRUYWdTdGF0ZShTZWFyY2hBdHRyaWJ1
dGUpOwogICAgICAgICAgICAgICAgICAgICBkZXN0ID0gYnVmZmVyOwogICAgICAgICAgICAgICAg
ICAgICB0cXVvdGUgPSBOb1F1b3RlOwpAQCAtMTAwNCw3ICsxMDA4LDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgIEF0b21pY1N0cmluZyB2KGJ1ZmZlcisxLCBkZXN0LWJ1ZmZlci0xKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXR0ck5hbWUgPSB2OyAvLyBNYWtlIHRoZSBuYW1lIG1hdGNoIHRo
ZSB2YWx1ZS4gKEZJWE1FOiBJcyB0aGlzIGEgV2luSUUgcXVpcms/KQotICAgICAgICAgICAgICAg
ICAgICAgICAgY3VyclRva2VuLmFkZEF0dHJpYnV0ZShwYXJzZXItPmRvYygpLCBhdHRyTmFtZSwg
dik7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9rZW4uYWRkQXR0cmlidXRlKG1fZG9j
LCBhdHRyTmFtZSwgdik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBidWZmZXI7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zZXRUYWdTdGF0ZShTZWFyY2hBdHRyaWJ1
dGUpOwpAQCAtMTAzNyw3ICsxMDQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJj
aGFyIDw9ICcgJyB8fCBjdXJjaGFyID09ICc+JyApCiAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEF0b21pY1N0cmluZyB2KGJ1ZmZlcisxLCBkZXN0LWJ1ZmZl
ci0xKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb2tlbi5hZGRBdHRyaWJ1dGUocGFy
c2VyLT5kb2MoKSwgYXR0ck5hbWUsIHYpOworICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRv
a2VuLmFkZEF0dHJpYnV0ZShtX2RvYywgYXR0ck5hbWUsIHYpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnNldFRh
Z1N0YXRlKFNlYXJjaEF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTEwOTEsMTYgKzEwOTUsMTYgQEAKICAgICAgICAgICAgICAgICBzY3JpcHRTcmMgPSBEZXBy
ZWNhdGVkU3RyaW5nOjpudWxsOwogICAgICAgICAgICAgICAgIHNjcmlwdFNyY0NoYXJzZXQgPSBE
ZXByZWNhdGVkU3RyaW5nOjpudWxsOwogICAgICAgICAgICAgICAgIGlmICggY3VyclRva2VuLmF0
dHJzICYmIC8qIHBvdGVudGlhbGx5IGhhdmUgYSBBVFRSX1NSQyA/ICovCi0gICAgICAgICAgICAg
ICAgICAgICBwYXJzZXItPmRvYygpLT5mcmFtZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICBw
YXJzZXItPmRvYygpLT5mcmFtZSgpLT5qU2NyaXB0RW5hYmxlZCgpICYmIC8qIGpzY3JpcHQgYWxs
b3dlZCBhdCBhbGw/ICovCisgICAgICAgICAgICAgICAgICAgICBtX2RvYy0+ZnJhbWUoKSAmJgor
ICAgICAgICAgICAgICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmpTY3JpcHRFbmFibGVkKCkgJiYg
LyoganNjcmlwdCBhbGxvd2VkIGF0IGFsbD8gKi8KICAgICAgICAgICAgICAgICAgICAgICFtX2Zy
YWdtZW50IC8qIGFyZSB3ZSBhIHJlZ3VsYXIgdG9rZW5pemVyIG9yIGp1c3QgZm9yIGlubmVySFRN
TCA/ICovCiAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
KGEgPSBjdXJyVG9rZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgc2NyaXB0U3JjID0gcGFyc2VyLT5kb2MoKS0+Y29tcGxldGVVUkwo
cGFyc2VVUkwoYS0+dmFsdWUoKSkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNjcmlwdFNyYyA9IG1fZG9jLT5jb21wbGV0ZVVSTChwYXJzZVVSTChhLT52YWx1
ZSgpKS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKGEgPSBj
dXJyVG9rZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oY2hhcnNldEF0dHIpKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdFNyY0NoYXJzZXQgPSBhLT52YWx1ZSgpLmRlcHJlY2F0ZWRT
dHJpbmcoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCBzY3Jp
cHRTcmNDaGFyc2V0LmlzRW1wdHkoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRT
cmNDaGFyc2V0ID0gcGFyc2VyLT5kb2MoKS0+ZnJhbWUoKS0+ZW5jb2RpbmcoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdFNyY0NoYXJzZXQgPSBtX2RvYy0+ZnJhbWUoKS0+ZW5jb2Rp
bmcoKTsKICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgdHlwZSBiZWZvcmUgbGFuZ3VhZ2Us
IHNpbmNlIGxhbmd1YWdlIGlzIGRlcHJlY2F0ZWQgKi8KICAgICAgICAgICAgICAgICAgICAgaWYg
KChhID0gY3VyclRva2VuLmF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVtKHR5cGVBdHRyKSkgIT0gMCAm
JiAhYS0+dmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFR5
cGVBdHRyaWJ1dGUgPSB0cnVlOwpAQCAtMTE1OSw3ICsxMTYzLDcgQEAKIAogICAgICAgICAgICAg
UmVmUHRyPE5vZGU+IG4gPSBwcm9jZXNzVG9rZW4oKTsKIAotICAgICAgICAgICAgaWYgKHRhZ05h
bWUgPT0gcHJlVGFnIHx8IHRhZ05hbWUgPT0gbGlzdGluZ1RhZykgeworICAgICAgICAgICAgaWYg
KCh0YWdOYW1lID09IHByZVRhZyB8fCB0YWdOYW1lID09IGxpc3RpbmdUYWcpICYmICFpblZpZXdT
b3VyY2VNb2RlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYmVnaW5UYWcpCiAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLnNldERpc2NhcmRMRih0cnVlKTsgLy8gRGlzY2FyZCB0aGUgZmlyc3Qg
TEYgYWZ0ZXIgd2Ugb3BlbiBhIHByZS4KICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9
PSBzY3JpcHRUYWcpIHsKQEAgLTEyNDMsOCArMTI0Nyw4IEBACiAgICAgICAgICAgICAvKiBGSVhN
RTogV2UnZCBsaWtlIHRvIHlpZWxkIGFnZ3Jlc3NpdmVseSB0byBnaXZlIHN0eWxlc2hlZXRzIHRo
ZSBvcHBvcnR1bml0eSB0bwogICAgICAgICAgICAgICAgbG9hZCwgYnV0IHRoaXMgaHVydHMgb3Zl
cmFsbCBwZXJmb3JtYW5jZSBvbiBzbG93ZXIgbWFjaGluZXMuICBGb3Igbm93IHR1cm4gdGhpcwog
ICAgICAgICAgICAgICAgb2ZmLgotICAgICAgICAgICAgfHwgKCFwYXJzZXItPmRvYygpLT5oYXZl
U3R5bGVzaGVldHNMb2FkZWQoKSAmJiAKLSAgICAgICAgICAgICAgICAocGFyc2VyLT5kb2MoKS0+
ZG9jdW1lbnRFbGVtZW50KCktPmlkKCkgIT0gSURfSFRNTCB8fCBwYXJzZXItPmRvYygpLT5ib2R5
KCkpKSkgeyovCisgICAgICAgICAgICB8fCAoIW1fZG9jLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSAmJiAKKyAgICAgICAgICAgICAgICAobV9kb2MtPmRvY3VtZW50RWxlbWVudCgpLT5pZCgpICE9
IElEX0hUTUwgfHwgbV9kb2MtPmJvZHkoKSkpKSB7Ki8KICAgICAgICAgICAgIC8vIFNjaGVkdWxl
IHRoZSB0aW1lciB0byBrZWVwIHByb2Nlc3NpbmcgYXMgc29vbiBhcyBwb3NzaWJsZS4KICAgICAg
ICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogI2lmIElOU1RSVU1FTlRfTEFZT1VUX1ND
SEVEVUxJTkcKQEAgLTEyOTQsMTQgKzEyOTgsMTQgQEAKICAgICBpbldyaXRlID0gdHJ1ZTsKICAg
ICAKICNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgaWYgKCFwYXJzZXItPmRv
YygpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJCZWdpbm5pbmcgd3JpdGUgYXQg
dGltZSAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7CisgICAgaWYgKCFtX2Rv
Yy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIHdyaXRlIGF0IHRp
bWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgogICAgIAogICAgIGludCBw
cm9jZXNzZWRDb3VudCA9IDA7CiAgICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7
CiAKLSAgICBGcmFtZSAqZnJhbWUgPSBwYXJzZXItPmRvYygpLT5mcmFtZSgpOworICAgIEZyYW1l
ICpmcmFtZSA9IG1fZG9jLT5mcmFtZSgpOwogCiAgICAgU3RhdGUgc3RhdGUgPSBtX3N0YXRlOwog
CkBAIC0xNDEyLDggKzE0MTYsOCBAQAogICAgIH0KICAgICAKICNpZiBJTlNUUlVNRU5UX0xBWU9V
VF9TQ0hFRFVMSU5HCi0gICAgaWYgKCFwYXJzZXItPmRvYygpLT5vd25lckVsZW1lbnQoKSkKLSAg
ICAgICAgcHJpbnRmKCJFbmRpbmcgd3JpdGUgYXQgdGltZSAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+
ZWxhcHNlZFRpbWUoKSk7CisgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCisgICAgICAg
IHByaW50ZigiRW5kaW5nIHdyaXRlIGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgp
KTsKICNlbmRpZgogICAgIAogICAgIGluV3JpdGUgPSB3YXNJbldyaXRlOwpAQCAtMTQ0NiwxMSAr
MTQ1MCwxMSBAQAogdm9pZCBIVE1MVG9rZW5pemVyOjp0aW1lckZpcmVkKFRpbWVyPEhUTUxUb2tl
bml6ZXI+KikKIHsKICNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgaWYgKCFw
YXJzZXItPmRvYygpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJCZWdpbm5pbmcg
dGltZXIgd3JpdGUgYXQgdGltZSAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7
CisgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIHByaW50ZigiQmVnaW5u
aW5nIHRpbWVyIHdyaXRlIGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNl
bmRpZgogCi0gICAgaWYgKHBhcnNlci0+ZG9jKCktPnZpZXcoKSAmJiBwYXJzZXItPmRvYygpLT52
aWV3KCktPmxheW91dFBlbmRpbmcoKSAmJiAhcGFyc2VyLT5kb2MoKS0+bWluaW11bUxheW91dERl
bGF5KCkpIHsKKyAgICBpZiAobV9kb2MtPnZpZXcoKSAmJiBtX2RvYy0+dmlldygpLT5sYXlvdXRQ
ZW5kaW5nKCkgJiYgIW1fZG9jLT5taW5pbXVtTGF5b3V0RGVsYXkoKSkgewogICAgICAgICAvLyBS
ZXN0YXJ0IHRoZSB0aW1lciBhbmQgbGV0IGxheW91dCB3aW4uICBUaGlzIGlzIGJhc2ljYWxseSBh
IHdheSBvZiBlbnN1cmluZyB0aGF0IHRoZSBsYXlvdXQKICAgICAgICAgLy8gdGltZXIgaGFzIGhp
Z2hlciBwcmlvcml0eSB0aGFuIG91ciB0aW1lci4KICAgICAgICAgbV90aW1lci5zdGFydE9uZVNo
b3QoMCk7CkBAIC0xNDg1LDcgKzE0ODksMTAgQEAKICAgICAgICAgYnVmZmVyID0gMDsKICAgICB9
CiAKLSAgICBwYXJzZXItPmZpbmlzaGVkKCk7CisgICAgaWYgKCFpblZpZXdTb3VyY2VNb2RlKCkp
CisgICAgICAgIHBhcnNlci0+ZmluaXNoZWQoKTsKKyAgICBlbHNlCisgICAgICAgIG1fZG9jLT5m
aW5pc2hlZFBhcnNpbmcoKTsKIH0KIAogdm9pZCBIVE1MVG9rZW5pemVyOjpmaW5pc2goKQpAQCAt
MTU3NiwxMCArMTU4MywxMyBAQAogCiAgICAgUmVmUHRyPE5vZGU+IG47CiAgICAgCi0gICAgaWYg
KCFtX3BhcnNlclN0b3BwZWQpCi0gICAgICAgIC8vIHBhc3MgdGhlIHRva2VuIG92ZXIgdG8gdGhl
IHBhcnNlciwgdGhlIHBhcnNlciBET0VTIE5PVCBkZWxldGUgdGhlIHRva2VuCi0gICAgICAgIG4g
PSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7Ci0gICAgCisgICAgaWYgKCFtX3BhcnNl
clN0b3BwZWQpIHsKKyAgICAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUoKSkKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxWaWV3U291cmNlRG9jdW1lbnQqPihtX2RvYyktPmFkZFZpZXdTb3Vy
Y2VUb2tlbigmY3VyclRva2VuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgLy8gcGFzcyB0
aGUgdG9rZW4gb3ZlciB0byB0aGUgcGFyc2VyLCB0aGUgcGFyc2VyIERPRVMgTk9UIGRlbGV0ZSB0
aGUgdG9rZW4KKyAgICAgICAgICAgIG4gPSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7
CisgICAgfQogICAgIGN1cnJUb2tlbi5yZXNldCgpOwogICAgIGlmIChqc1Byb3h5KQogICAgICAg
ICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CkBAIC0xNjE0LDggKzE2MjQsOCBA
QAogdm9pZCBIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRPYmplY3QqKQogewog
I2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKLSAgICBpZiAoIXBhcnNlci0+ZG9jKCkt
Pm93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoInNjcmlwdCBsb2FkZWQgYXQgJWRcbiIs
IHBhcnNlci0+ZG9jKCktPmVsYXBzZWRUaW1lKCkpOworICAgIGlmICghbV9kb2MtPm93bmVyRWxl
bWVudCgpKQorICAgICAgICBwcmludGYoInNjcmlwdCBsb2FkZWQgYXQgJWRcbiIsIG1fZG9jLT5l
bGFwc2VkVGltZSgpKTsKICNlbmRpZgogCiAgICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0cy5pc0Vt
cHR5KCkpOwpAQCAtMTY0Miw4ICsxNjUyLDggQEAKICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAK
ICNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgICAgIGlmICghcGFyc2VyLT5k
b2MoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBwcmludGYoImV4dGVybmFsIHNjcmlw
dCBiZWdpbm5pbmcgZXhlY3V0aW9uIGF0ICVkXG4iLCBwYXJzZXItPmRvYygpLT5lbGFwc2VkVGlt
ZSgpKTsKKyAgICAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBw
cmludGYoImV4dGVybmFsIHNjcmlwdCBiZWdpbm5pbmcgZXhlY3V0aW9uIGF0ICVkXG4iLCBtX2Rv
Yy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoZXJyb3JPY2N1cnJlZCkK
QEAgLTE2NTksOCArMTY2OSw4IEBACiAgICAgICAgIGlmIChmaW5pc2hlZCkgewogICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRMb2FkaW5nRXh0U2NyaXB0KGZhbHNlKTsKICNpZiBJTlNUUlVNRU5UX0xB
WU9VVF9TQ0hFRFVMSU5HCi0gICAgICAgICAgICBpZiAoIXBhcnNlci0+ZG9jKCktPm93bmVyRWxl
bWVudCgpKQotICAgICAgICAgICAgICAgIHByaW50ZigiZXh0ZXJuYWwgc2NyaXB0IGZpbmlzaGVk
IGV4ZWN1dGlvbiBhdCAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7CisgICAg
ICAgICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwcmlu
dGYoImV4dGVybmFsIHNjcmlwdCBmaW5pc2hlZCBleGVjdXRpb24gYXQgJWRcbiIsIG1fZG9jLT5l
bGFwc2VkVGltZSgpKTsKICNlbmRpZgogICAgICAgICB9CiAKSW5kZXg6IGh0bWwvSFRNTEZyYW1l
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5oCShyZXZpc2lv
biAxNDk0NykKKysrIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
OCw2ICs5OCw4IEBACiAgICAgaW50IGZyYW1lV2lkdGgoKSBjb25zdDsKICAgICBpbnQgZnJhbWVI
ZWlnaHQoKSBjb25zdDsKIAorICAgIGJvb2wgdmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdTb3VyY2U7IH0KKwogcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVUkxBbGxvd2VkKGNv
bnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBvcGVuVVJMKCk7CkBA
IC0xMTIsNiArMTE0LDcgQEAKICAgICBib29sIG1fZnJhbWVCb3JkZXIgOiAxOwogICAgIGJvb2wg
bV9mcmFtZUJvcmRlclNldCA6IDE7CiAgICAgYm9vbCBtX25vUmVzaXplIDogMTsKKyAgICBib29s
IG1fdmlld1NvdXJjZSA6IDE7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiByZW5kZXJpbmcv
UmVuZGVyUGFydE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclBhcnRP
YmplY3QuY3BwCShyZXZpc2lvbiAxNDk0NykKKysrIHJlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw4IEBACiAgICAgICAgICAgdXJsID0g
ImFib3V0OmJsYW5rIjsKICAgICAgIEZyYW1lVmlldyogdiA9IHN0YXRpY19jYXN0PEZyYW1lVmll
dyo+KG1fdmlldyk7CiAgICAgICB2LT5mcmFtZSgpLT5yZXF1ZXN0RnJhbWUodGhpcywgdXJsLCBv
LT5tX25hbWUpOworICAgICAgaWYgKG8tPmNvbnRlbnRGcmFtZSgpKQorICAgICAgICAgIG8tPmNv
bnRlbnRGcmFtZSgpLT5zZXRJblZpZXdTb3VyY2VNb2RlKG8tPnZpZXdTb3VyY2VNb2RlKCkpOwog
ICB9CiB9CiAKSW5kZXg6IGRvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMTQ5NDcpCisrKyBkb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIwLDcgKzEyMjAsNyBAQAogI2VuZGlmCiAKICNpZiBTVkdfU1VQUE9SVAotICAg
IC8vIEZJWE1FOiBPZmZpY2lhbGx5LCB0aW1lIDAgaXMgd2hlbiB0aGUgb3V0ZXJtb3N0IDxzdmc+
IHJlY2lldmVzIGl0cworICAgIC8vIEZJWE1FOiBPZmZpY2lhbGx5LCB0aW1lIDAgaXMgd2hlbiB0
aGUgb3V0ZXJtb3N0IDxzdmc+IHJlY2VpdmVzIGl0cwogICAgIC8vIFNWR0xvYWQgZXZlbnQsIGJ1
dCB3ZSBkb24ndCBpbXBsZW1lbnQgdGhvc2UgeWV0LiAgVGhpcyBpcyBjbG9zZSBlbm91Z2gKICAg
ICAvLyBmb3Igbm93LiAgSW4gc29tZSBjYXNlcyB3ZSBzaG91bGQgaGF2ZSBmaXJlZCBlYXJsaWVy
LgogICAgIGlmIChzdmdFeHRlbnNpb25zKCkpCkluZGV4OiBkb20veG1sX3Rva2VuaXplci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGRvbS94bWxfdG9rZW5pemVyLmgJKHJldmlzaW9uIDE0OTQ3KQorKysgZG9t
L3htbF90b2tlbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksMTIgQEAKIGNsYXNz
IFRva2VuaXplcgogewogcHVibGljOgotICAgIFRva2VuaXplcigpIDogbV9wYXJzZXJTdG9wcGVk
KGZhbHNlKSB7IH0KLSAgICB2aXJ0dWFsIH5Ub2tlbml6ZXIoKSB7IH0KKyAgICBUb2tlbml6ZXIo
Ym9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKSAKKyAgICA6IG1fcGFyc2VyU3RvcHBlZChmYWxz
ZSkKKyAgICAsIG1faW5WaWV3U291cmNlTW9kZSh2aWV3U291cmNlTW9kZSkKKyAgICB7fQorICAg
IAorICAgIHZpcnR1YWwgflRva2VuaXplcigpIHt9CiAKICAgICAvLyBTY3JpcHQgb3V0cHV0IG11
c3QgYmUgcHJlcGVuZGVkLCB3aGlsZSBuZXcgZGF0YQogICAgIC8vIHJlY2VpdmVkIGR1cmluZyBl
eGVjdXRpbmcgYSBzY3JpcHQgbXVzdCBiZSBhcHBlbmRlZCwgaGVuY2UgdGhlCkBAIC01NiwxMSAr
NjAsMTYgQEAKICAgICB2aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW4pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCisgICAgYm9vbCBpblZpZXdTb3VyY2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pblZpZXdTb3VyY2VNb2RlOyB9CisgICAgdm9pZCBzZXRJ
blZpZXdTb3VyY2VNb2RlKGJvb2wgbW9kZSkgeyBtX2luVmlld1NvdXJjZU1vZGUgPSBtb2RlOyB9
CisKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgdG9rZW5pemVyIGhhcyBidWZmZXJzLCBzbyBwYXJz
aW5nIG1heSBjb250aW51ZSBldmVuIGFmdGVyCiAgICAgLy8gaXQgc3RvcHMgcmVjZWl2aW5nIGRh
dGEuIFdlIHVzZSBtX3BhcnNlclN0b3BwZWQgdG8gc3RvcCB0aGUgdG9rZW5pemVyCiAgICAgLy8g
ZXZlbiB3aGVuIGl0IGhhcyBidWZmZXJlZCBkYXRhLgogICAgIGJvb2wgbV9wYXJzZXJTdG9wcGVk
OworICAgIAorICAgIGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOwogfTsKIAogVG9rZW5pemVyKiBu
ZXdYTUxUb2tlbml6ZXIoRG9jdW1lbnQqLCBGcmFtZVZpZXcqID0gMCk7CkluZGV4OiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDk1MikKKysrIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5OSw2ICsxMzk5LDcgQEAKIAkJ
QkMxQTM3QzAwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzdBQTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NVmlld3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQzFBMzdDMTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzdBQjA5N0M3MTVGMDAxOUYz
RDggLyogRE9NVmlld3MubW0gKi87IH07CiAJCUJDMUEzN0MyMDk3QzcxNUYwMDE5RjNEOCAvKiBE
T01WaWV3c0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzFBMzdBQzA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3NJbnRlcm5hbC5oICov
OyB9OworCQlCQzVFQzE3NzBBNTA3RTNFMDA2MDA3RjUgLyogdmlldy1zb3VyY2UuY3NzIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQzE3NjBBNTA3
RTNFMDA2MDA3RjUgLyogdmlldy1zb3VyY2UuY3NzICovOyB9OwogCQlCQzZCN0JBRjA5OTM2MDND
MDA1Mjg2N0IgLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM2QjdCQUUwOTkzNjAzQzAwNTI4NjdCIC8qIEltYWdlLmNwcCAqLzsgfTsK
IAkJQkM2QjdFQ0YwOTk4QUM3RjAwNTI4NjdCIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZCN0VDRTA5OThBQzdGMDA1Mjg2
N0IgLyogSW1hZ2VTb3VyY2UuaCAqLzsgfTsKIAkJQkM2RDZERDIwOUFGOTA2NjAwRjU5NzU5IC8q
IEZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2RDZERDAwOUFGOTA2NjAwRjU5NzU5IC8qIEZvbnQuY3BwICovOyB9OwpAQCAtMTQ1OSw2ICsx
NDYwLDggQEAKIAkJQkNDOENGQ0MwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M4Q0ZDOTA5ODZDRDI0MDAx
NDBCRjIgLyogQ29sb3IuaCAqLzsgfTsKIAkJQkNDOEQxNzMwOTg4MzAxMjAwMTQwQkYyIC8qIFBl
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M4
RDE3MTA5ODgzMDEyMDAxNDBCRjIgLyogUGVuLmNwcCAqLzsgfTsKIAkJQkNDOEQxNzQwOTg4MzAx
MjAwMTQwQkYyIC8qIFBlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNDOEQxNzIwOTg4MzAxMjAwMTQwQkYyIC8qIFBlbi5oICovOyB9OworCQlCQ0NE
NzREQzBBNEM4RDM1MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRDc0REIwQTRDOEQzNTAw
NUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCAqLzsgfTsKKwkJQkNDRDc0RTUwQTRD
OERERjAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRDc0RTQwQTRDOERERjAwNUZEQTZE
IC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwICovOyB9OwogCQlCQ0Q3NUFCQzA5ODlBNDQ2
MDAzRTI4REYgLyogSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDc1QUJCMDk4OUE0NDYwMDNFMjhERiAvKiBJbWFnZS5oICovOyB9OwogCQlC
Q0VBNDc4RjA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdD
MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9
OwogCQlCQ0VBNDc5MDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VB
NDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87
IH07CkBAIC0zMTMyLDYgKzMxMzUsNyBAQAogCQlCQzFBMzdBQjA5N0M3MTVGMDAxOUYzRDggLyog
RE9NVmlld3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
Vmlld3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUEzN0FDMDk3QzcxNUYw
MDE5RjNEOCAvKiBET01WaWV3c0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01WaWV3c0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CisJCUJDNUVDMTc2MEE1MDdFM0UwMDYwMDdGNSAvKiB2aWV3LXNvdXJjZS5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9ICJ2aWV3LXNvdXJjZS5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzZCN0JBRTA5OTM2MDNDMDA1Mjg2N0IgLyogSW1hZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM2QjdFQ0UwOTk4QUM3RjAwNTI4NjdCIC8qIEltYWdlU291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENkREMDA5QUY5MDY2MDBGNTk3NTkgLyogRm9udC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTk3LDYgKzMyMDEsOCBAQAogCQlCQ0M4Q0ZDQTA5
ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDb2xvckRhdGEuZ3BlcmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzhEMTcx
MDk4ODMwMTIwMDE0MEJGMiAvKiBQZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzhEMTcy
MDk4ODMwMTIwMDE0MEJGMiAvKiBQZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0NENzREQjBBNEM4RDM1
MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0NENzRFNDBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDc1
QUJCMDk4OUE0NDYwMDNFMjhERiAvKiBJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3N0Mw
OTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3N0QwOTdDQUFDODAw
OTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDIzLDYgKzQwMjksNyBAQAogCQk5M0VFQzFFQzA5QzI4
Nzc3MDBDNTE1RDEgLyogaHRtbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQkNDRDc0REIwQTRDOEQzNTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQuaCAqLywKIAkJCQk5M0VFQzFGMDA5QzI4Nzc3MDBDNTE1RDEgLyogQ2FudmFzR3JhZGll
bnQuY3BwICovLAogCQkJCTkzRUVDMUYxMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNHcmFkaWVu
dC5oICovLAogCQkJCTkzMENBQjg4MDlDNDlFRkEwMDIyOUMwNCAvKiBDYW52YXNHcmFkaWVudC5p
ZGwgKi8sCkBAIC00MjIzLDYgKzQyMzAsNyBAQAogCQkJCUE4RUE3OUU3MEExOTE2REYwMEE4RUY1
RiAvKiBIVE1MVUxpc3RFbGVtZW50LmNwcCAqLywKIAkJCQlBOEVBNzlFNjBBMTkxNkRGMDBBOEVG
NUYgLyogSFRNTFVMaXN0RWxlbWVudC5oICovLAogCQkJCTFBODVCMUQ1MEExQjIzNkMwMEQ4Qzg3
QyAvKiBIVE1MVUxpc3RFbGVtZW50LmlkbCAqLywKKwkJCQlCQ0NENzRFNDBBNEM4RERGMDA1RkRB
NkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0
bWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTIxOCw2ICs1MjI2LDcgQEAKIAkJ
CQlBOEVBODAwMjBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCAqLywKIAkJCQk5
M0NBNENBMjA5REY5M0ZBMDBERjg2NzcgLyogc3ZnLmNzcyAqLywKIAkJCQk5M0NBNENBMzA5REY5
M0ZBMDBERjg2NzcgLyogdG9rZW5pemVyLmZsZXggKi8sCisJCQkJQkM1RUMxNzYwQTUwN0UzRTAw
NjAwN0Y1IC8qIHZpZXctc291cmNlLmNzcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTYzMTYsNiArNjMyNSw3IEBACiAJCQkJODUwMzFC
NEYwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQkU3QjUyNDBBNDg5RjgzMDAzMTg4MUMgLyogRGVwcmVjYXRlZFJlbmRlclNl
bGVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNDRDc0REMwQTRDOEQzNTAwNUZEQTZEIC8qIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjQwNyw2ICs2NDE3LDcg
QEAKIAkJCQlBN0I5N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKIAkJCQlBNzYzOEE5MjA5OTU5MkMzMDAwN0UxNEYg
LyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJ
CUFCNDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJQkM1RUMxNzcwQTUwN0UzRTAwNjAwN0Y1IC8qIHZpZXctc291cmNlLmNzcyBp
biBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC03MTY4LDYgKzcxNzksNyBAQAogCQkJCTg1MDMxQjUwMEE0NEVG
QzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCRTdCNTIz
MEE0ODlGODMwMDMxODgxQyAvKiBEZXByZWNhdGVkUmVuZGVyU2VsZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjExRTE1MEE0OEMyOTIwMDM0QTI0RSAvKiBTUUxUcmFuc2FjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0NENzRFNTBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IGNzcy9jc3NzdHlsZXNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDE0OTY4KQorKysgY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTQsMTIgKzE5NCwxNiBAQAogICAgIHVuc2lnbmVkIG1fcnVsZUNvdW50OwogfTsKIAotQ1NTUnVs
ZVNldCAqQ1NTU3R5bGVTZWxlY3Rvcjo6ZGVmYXVsdFN0eWxlID0gMDsKLUNTU1J1bGVTZXQgKkNT
U1N0eWxlU2VsZWN0b3I6OmRlZmF1bHRRdWlya3NTdHlsZSA9IDA7Ci1DU1NSdWxlU2V0ICpDU1NT
dHlsZVNlbGVjdG9yOjpkZWZhdWx0UHJpbnRTdHlsZSA9IDA7Ci1DU1NTdHlsZVNoZWV0ICpDU1NT
dHlsZVNlbGVjdG9yOjpkZWZhdWx0U2hlZXQgPSAwOworQ1NTUnVsZVNldCogQ1NTU3R5bGVTZWxl
Y3Rvcjo6ZGVmYXVsdFN0eWxlID0gMDsKK0NTU1J1bGVTZXQqIENTU1N0eWxlU2VsZWN0b3I6OmRl
ZmF1bHRRdWlya3NTdHlsZSA9IDA7CitDU1NSdWxlU2V0KiBDU1NTdHlsZVNlbGVjdG9yOjpkZWZh
dWx0UHJpbnRTdHlsZSA9IDA7CitDU1NSdWxlU2V0KiBDU1NTdHlsZVNlbGVjdG9yOjpkZWZhdWx0
Vmlld1NvdXJjZVN0eWxlID0gMDsKKworQ1NTU3R5bGVTaGVldCogQ1NTU3R5bGVTZWxlY3Rvcjo6
ZGVmYXVsdFNoZWV0ID0gMDsKIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZU5v
dFlldEF2YWlsYWJsZSA9IDA7Ci1DU1NTdHlsZVNoZWV0ICpDU1NTdHlsZVNlbGVjdG9yOjpxdWly
a3NTaGVldCA9IDA7CitDU1NTdHlsZVNoZWV0KiBDU1NTdHlsZVNlbGVjdG9yOjpxdWlya3NTaGVl
dCA9IDA7CitDU1NTdHlsZVNoZWV0KiBDU1NTdHlsZVNlbGVjdG9yOjp2aWV3U291cmNlU2hlZXQg
PSAwOworCiAjaWYgU1ZHX1NVUFBPUlQKIENTU1N0eWxlU2hlZXQgKkNTU1N0eWxlU2VsZWN0b3I6
OnN2Z1NoZWV0ID0gMDsKICNlbmRpZgpAQCAtMzQ4LDYgKzM1Miw3IEBACiAgICAgZGVmYXVsdFN0
eWxlID0gbmV3IENTU1J1bGVTZXQ7CiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBuZXcgQ1NTUnVs
ZVNldDsKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBuZXcgQ1NTUnVsZVNldDsKKyAgICBkZWZh
dWx0Vmlld1NvdXJjZVN0eWxlID0gbmV3IENTU1J1bGVTZXQ7CiAKICAgICBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJp
bnRFdmFsKCJwcmludCIpOwpAQCAtMzY3LDYgKzM3MiwxMCBAQAogICAgIC8vIFF1aXJrcy1tb2Rl
IHJ1bGVzLgogICAgIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0KHF1aXJrc1VzZXJBZ2VudFN0
eWxlU2hlZXQpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVp
cmtzU2hlZXQsICZzY3JlZW5FdmFsKTsKKyAgICAKKyAgICAvLyBWaWV3IHNvdXJjZSBydWxlcy4K
KyAgICB2aWV3U291cmNlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc291cmNlVXNlckFnZW50U3R5bGVT
aGVldCk7CisgICAgZGVmYXVsdFZpZXdTb3VyY2VTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQodmll
d1NvdXJjZVNoZWV0LCAmc2NyZWVuRXZhbCk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hSdWxlcyhDU1NSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBs
YXN0UnVsZUluZGV4KQpAQCAtNzQ3LDYgKzc1NiwxMCBAQAogICAgIC8vIDMuIElmIG91ciBtZWRp
dW0gaXMgcHJpbnQsIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcHJpbnQgc2hlZXQuCiAg
ICAgaWYgKG1fbWVkaXVtLT5tZWRpYVR5cGVNYXRjaCgicHJpbnQiKSkKICAgICAgICAgbWF0Y2hS
dWxlcyhkZWZhdWx0UHJpbnRTdHlsZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgICAg
ICAKKyAgICAvLyA0LiBJZiB3ZSdyZSBpbiB2aWV3IHNvdXJjZSBtb2RlLCB0aGVuIHdlIG1hdGNo
IHJ1bGVzIGZyb20gdGhlIHZpZXcgc291cmNlIHN0eWxlIHNoZWV0LgorICAgIGlmICh2aWV3ICYm
IHZpZXctPmZyYW1lKCkgJiYgdmlldy0+ZnJhbWUoKS0+aW5WaWV3U291cmNlTW9kZSgpKQorICAg
ICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRWaWV3U291cmNlU3R5bGUsIGZpcnN0VUFSdWxlLCBsYXN0
VUFSdWxlKTsKIH0KIAogLy8gSWYgcmVzb2x2ZUZvclJvb3REZWZhdWx0IGlzIHRydWUsIHN0eWxl
IGJhc2VkIG9uIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXQgb25seS4gVGhpcyBpcyB1c2VkIGluIG1l
ZGlhIHF1ZXJpZXMsIHdoZXJlCkluZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHJldmlzaW9uIDE0OTQ3KQorKysgY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDE0ICsxNTgsMTggQEAKIAog
ICAgICAgICB2b2lkIGFwcGx5RGVjbGFyYXRpb25zKGJvb2wgZmlyc3RQYXNzLCBib29sIGltcG9y
dGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCk7CiAgICAgICAgIAotICAgICAgICBz
dGF0aWMgQ1NTU3R5bGVTaGVldCAqZGVmYXVsdFNoZWV0OwotICAgICAgICBzdGF0aWMgQ1NTU3R5
bGVTaGVldCAqcXVpcmtzU2hlZXQ7CisgICAgICAgIHN0YXRpYyBDU1NTdHlsZVNoZWV0KiBkZWZh
dWx0U2hlZXQ7CisgICAgICAgIHN0YXRpYyBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldDsKKyAg
ICAgICAgc3RhdGljIENTU1N0eWxlU2hlZXQqIHZpZXdTb3VyY2VTaGVldDsKICNpZiBTVkdfU1VQ
UE9SVAotICAgICAgICBzdGF0aWMgQ1NTU3R5bGVTaGVldCAqc3ZnU2hlZXQ7CisgICAgICAgIHN0
YXRpYyBDU1NTdHlsZVNoZWV0KiBzdmdTaGVldDsKICNlbmRpZgorCiAgICAgICAgIHN0YXRpYyBD
U1NSdWxlU2V0KiBkZWZhdWx0U3R5bGU7CiAgICAgICAgIHN0YXRpYyBDU1NSdWxlU2V0KiBkZWZh
dWx0UXVpcmtzU3R5bGU7CiAgICAgICAgIHN0YXRpYyBDU1NSdWxlU2V0KiBkZWZhdWx0UHJpbnRT
dHlsZTsKKyAgICAgICAgc3RhdGljIENTU1J1bGVTZXQqIGRlZmF1bHRWaWV3U291cmNlU3R5bGU7
CisKICAgICAgICAgQ1NTUnVsZVNldCogbV9hdXRob3JTdHlsZTsKICAgICAgICAgQ1NTUnVsZVNl
dCogbV91c2VyU3R5bGU7CiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1fdXNlclNoZWV0OwpJbmRl
eDogY3NzL3ZpZXctc291cmNlLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3Mvdmlldy1zb3VyY2UuY3Nz
CShyZXZpc2lvbiAwKQorKysgY3NzL3ZpZXctc291cmNlLmNzcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKy53ZWJraXQtaHRtbC10YWcgeworICAgIGNvbG9yOiByZ2IoMTM2
LCAxOCwgMTI4KQorfQorCisud2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUgeworICAgIGNvbG9y
OiByZ2IoMTUzLCA2OSwgMCkKK30KKworLndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSB7Cisg
ICAgY29sb3I6IHJnYigyNiwgMjYsIDE2NikKK30KKworLndlYmtpdC1odG1sLWNvbW1lbnQgewor
ICAgIGNvbG9yOiByZ2IoMzUsIDExMCwgMzcpOworfQorCisud2Via2l0LWh0bWwtZG9jdHlwZSB7
CisgICAgY29sb3I6IHJnYigxOTIsIDE5MiwgMTkyKTsKK30KKworLndlYmtpdC1odG1sLWVudGl0
eSB7CisgICAgcmdiKDEzNiwgMTgsIDEyOCk7Cit9CkluZGV4OiBicmlkZ2UvbWFjL1dlYkNvcmVG
cmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRn
ZS5tbQkocmV2aXNpb24gMTQ5NDcpCisrKyBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjU4NCw2ICsyNTg0LDE2IEBACiAgICAgcmV0dXJuIG1fZnJh
bWUtPmNvbnRhaW5zUGx1Z2lucygpOwogfQogCistICh2b2lkKXNldEluVmlld1NvdXJjZU1vZGU6
KEJPT0wpZmxhZworeworICAgIG1fZnJhbWUtPnNldEluVmlld1NvdXJjZU1vZGUoZmxhZyk7Cit9
CisKKy0gKEJPT0wpaW5WaWV3U291cmNlTW9kZQoreworICAgIHJldHVybiBtX2ZyYW1lLT5pblZp
ZXdTb3VyY2VNb2RlKCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVGcmFt
ZUJyaWRnZSAoV2ViQ29yZUJyaWRnZUludGVybmFsKQpJbmRleDogYnJpZGdlL21hYy9XZWJDb3Jl
RnJhbWVCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRn
ZS5oCShyZXZpc2lvbiAxNDk0NykKKysrIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5Myw2ICs0OTMsMTAgQEAKIC0gKEJPT0wpY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlOwogLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlOwogLSAoQk9PTCljb250
YWluc1BsdWdpbnM7CisKKy0gKHZvaWQpc2V0SW5WaWV3U291cmNlTW9kZTooQk9PTClmbGFnOwor
LSAoQk9PTClpblZpZXdTb3VyY2VNb2RlOworCiBAZW5kCiAKIC8vIFRoZSBXZWJDb3JlRnJhbWVC
cmlkZ2UgcHJvdG9jb2wgY29udGFpbnMgbWV0aG9kcyBmb3IgdXNlIGJ5IHRoZSBXZWJDb3JlIHNp
ZGUgb2YgdGhlIGJyaWRnZS4KSW5kZXg6IHBhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdl
L0ZyYW1lLmgJKHJldmlzaW9uIDE0OTQ3KQorKysgcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NTIsNiArNDUyLDkgQEAKIAogICB2aXJ0dWFsIHZvaWQgdG9rZW5pemVyUHJvY2Vzc2Vk
RGF0YSgpIHt9CiAKKyAgYm9vbCBpblZpZXdTb3VyY2VNb2RlKCkgY29uc3Q7CisgIHZvaWQgc2V0
SW5WaWV3U291cmNlTW9kZShib29sID0gdHJ1ZSkgY29uc3Q7CisKICAgY29uc3QgS0hUTUxTZXR0
aW5ncyogc2V0dGluZ3MoKSBjb25zdDsKIAogICB2b2lkIHNldEpTU3RhdHVzQmFyVGV4dChjb25z
dCBTdHJpbmcmKTsKSW5kZXg6IHBhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJh
bWUuY3BwCShyZXZpc2lvbiAxNDk0NykKKysrIHBhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1MRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxHZW5lcmljRm9ybUVsZW1lbnQuaCIKQEAgLTU5MCw2ICs1OTAsOCBAQAogICAgIGQtPm1f
ZG9jID0gbmV3IEltYWdlRG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCksIGQt
Pm1fdmlldy5nZXQoKSk7CiAgIGVsc2UgaWYgKFBsdWdJbkluZm9TdG9yZTo6c3VwcG9ydHNNSU1F
VHlwZShkLT5tX3JlcXVlc3QubV9yZXNwb25zZU1JTUVUeXBlKSkKICAgICBkLT5tX2RvYyA9IG5l
dyBQbHVnaW5Eb2N1bWVudChET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2UoKSwgZC0+bV92aWV3
LmdldCgpKTsKKyAgZWxzZSBpZiAoaW5WaWV3U291cmNlTW9kZSgpKQorICAgIGQtPm1fZG9jID0g
bmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCks
IGQtPm1fdmlldy5nZXQoKSk7CiAgIGVsc2UKICAgICBkLT5tX2RvYyA9IERPTUltcGxlbWVudGF0
aW9uOjppbnN0YW5jZSgpLT5jcmVhdGVIVE1MRG9jdW1lbnQoZC0+bV92aWV3LmdldCgpKTsKIApA
QCAtMzM0OSw2ICszMzUxLDE2IEBACiAgICAgICAgIGRvYy0+ZGlzcGF0Y2hXaW5kb3dFdmVudChm
bGFnID8gZm9jdXNFdmVudCA6IGJsdXJFdmVudCwgZmFsc2UsIGZhbHNlKTsKIH0KIAorYm9vbCBG
cmFtZTo6aW5WaWV3U291cmNlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1faW5WaWV3
U291cmNlTW9kZTsKK30KKwordm9pZCBGcmFtZTo6c2V0SW5WaWV3U291cmNlTW9kZShib29sIG1v
ZGUpIGNvbnN0Cit7CisgICAgZC0+bV9pblZpZXdTb3VyY2VNb2RlID0gbW9kZTsKK30KKyAgCiBV
Q2hhciBGcmFtZTo6YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpIGNvbnN0CiB7CiAgICAgRG9j
dW1lbnQgKmRvYyA9IGRvY3VtZW50KCk7CkluZGV4OiBwYWdlL0ZyYW1lUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBhZ2UvRnJhbWVQcml2YXRlLmgJKHJldmlzaW9uIDE0OTQ3KQorKysgcGFnZS9G
cmFtZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBACiAgICAgICAg
ICAgICAsIG1fbWFya2VkVGV4dFVzZXNVbmRlcmxpbmVzKGZhbHNlKQogICAgICAgICAgICAgLCBt
X2hpZ2hsaWdodFRleHRNYXRjaGVzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3dpbmRvd0hhc0Zv
Y3VzKGZhbHNlKQorICAgICAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAg
ICAgICAgICAsIGZyYW1lQ291bnQoMCkKICAgICAgICAgewogICAgICAgICB9CkBAIC0yMjUsNiAr
MjI2LDggQEAKICAgICAgICAgYm9vbCBtX2hpZ2hsaWdodFRleHRNYXRjaGVzOwogICAgICAgICBi
b29sIG1fd2luZG93SGFzRm9jdXM7CiAgICAgICAgIAorICAgICAgICBib29sIG1faW5WaWV3U291
cmNlTW9kZTsKKwogICAgICAgICB1bnNpZ25lZCBmcmFtZUNvdW50OwogICAgIH07CiB9Cg==
</data>
<flag name="review"
          id="2688"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>