<?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>27807</bug_id>
          
          <creation_ts>2009-07-29 10:00:14 -0700</creation_ts>
          <short_desc>AX: move re-usable code into more common areas for other platforms</short_desc>
          <delta_ts>2009-07-29 14:41:56 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135614</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 10:00:14 -0700</bug_when>
    <thetext>Theres some re-usable like code in AccessibilityObjectWrapper for the mac that will be needed for the iphone. this bug is for the purpose of re-organizing said code into more accessible locations to avoid duplication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135629</commentid>
    <comment_count>1</comment_count>
      <attachid>33723</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 10:47:17 -0700</bug_when>
    <thetext>Created attachment 33723
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135634</commentid>
    <comment_count>2</comment_count>
      <attachid>33726</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 11:08:12 -0700</bug_when>
    <thetext>Created attachment 33726
patch (minor update to make sure TextMarkerData is bzerod right away in the method)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135671</commentid>
    <comment_count>3</comment_count>
      <attachid>33726</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-07-29 13:28:14 -0700</bug_when>
    <thetext>Comment on attachment 33726
patch (minor update to make sure TextMarkerData is bzerod right away in the method)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135689</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 14:35:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46555</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135690</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 14:40:31 -0700</bug_when>
    <thetext>apparently bzero doesn&apos;t exist in windows, which is causing a failure. looking into it..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135691</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-07-29 14:41:56 -0700</bug_when>
    <thetext>will use memset instead</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33723</attachid>
            <date>2009-07-29 10:47:17 -0700</date>
            <delta_ts>2009-07-29 11:08:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12246</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjU0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDctMjkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc4MDcgLSBBWDogbW92ZSByZS11c2FibGUgY29kZSBpbnRvIG1vcmUgY29tbW9uIGFy
ZWFzIGZvciBvdGhlciBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI3ODA3CisKKyAgICAgICAgTW92ZXMgc29tZSBhY2Nlc3NpYmlsaXR5
IGNvZGUgdGhhdCB3YXMgaW4gdGhlIE1hYyBmaWxlIHRvIGEgbW9yZSBjb21tb24gcGxhY2Ugc28g
CisgICAgICAgIGl0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIHBsYXRmb3Jtcy4gCisgICAgICAgIFRo
aXMgaW5jbHVkZXM6CisgICAgICAgICAgIE1ha2luZyBUZXh0TWFya2VyRGF0YSBmcm9tIGEgVmlz
aWJsZVBvc2l0aW9uLgorICAgICAgICAgICBNYWtpbmcgYSBWaXNpYmxlUG9zaXRpb24gZnJvbSBU
ZXh0TWFya2VyRGF0YS4KKyAgICAgICAgICAgRmluZGluZyB0aGUgYW5jaG9yIGFjY2Vzc2liaWxp
dHkgb2JqZWN0IGZvciBhbiBhcmJpdHJhcnkgTm9kZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKHRleHRNYXJrZXJGb3JW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAodmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KToKKwogMjAwOS0wNy0yOSAg
SmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDQ2NTQ2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlSGVh
ZGVyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCisjaW5j
bHVkZSAiSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMzM3LDUgKzMzOCw2
MSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlCiAgICAgICAgIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmopLT5zZXRBcmlhUm9sZSgp
OwogfQogI2VuZGlmCisgICAgCitWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRh
KQoreworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKHRl
eHRNYXJrZXJEYXRhLm5vZGUsIHRleHRNYXJrZXJEYXRhLm9mZnNldCwgdGV4dE1hcmtlckRhdGEu
YWZmaW5pdHkpOworICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFs
ZW50KCk7CisgICAgaWYgKGRlZXBQb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZGVlcFBvcy5u
b2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOworICAgIAorICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gcmVuZGVy
ZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlLT5pc0lEaW5V
c2UodGV4dE1hcmtlckRhdGEuYXhJRCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKKyAgICAKKyAgICBpZiAoZGVlcFBvcy5ub2RlKCkgIT0gdGV4dE1hcmtlckRhdGEubm9kZSB8
fCBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgIT0gdGV4dE1hcmtlckRhdGEub2Zm
c2V0KQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisgICAgCisgICAgcmV0dXJu
IHZpc2libGVQb3M7Cit9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JW
aXNpYmxlUG9zaXRpb24oVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpCit7CisgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBv
cy5kZWVwRXF1aXZhbGVudCgpOworICAgIE5vZGUqIGRvbU5vZGUgPSBkZWVwUG9zLm5vZGUoKTsK
KyAgICBBU1NFUlQoZG9tTm9kZSk7CisgICAgaWYgKCFkb21Ob2RlKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgaWYgKGRvbU5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRvSW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1l
bnQqPihkb21Ob2RlKSk7CisgICAgICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50
LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgLy8gbG9jYXRlIHRoZSByZW5kZXJlciwgd2hpY2ggbXVzdCBleGlzdCBmb3IgYSB2aXNpYmxl
IGRvbSBub2RlCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRvbU5vZGUtPnJlbmRlcmVy
KCk7CisgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICAKKyAgICAvLyBmaW5kIG9yIGNyZWF0ZSBh
biBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3IgdGhpcyByZW5kZXJlcgorICAgIEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRl
cmVyKTsKKyAgICAKKyAgICAvLyBjcmVhdGUgYSB0ZXh0IG1hcmtlciwgYWRkaW5nIGFuIElEIGZv
ciB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBpZiBuZWVkZWQKKyAgICAvLyBUaGUgY29tcGlsZXIg
Y2FuIGFkZCBwYWRkaW5nIHRvIHRoaXMgc3RydWN0LiAKKyAgICAvLyBUaGlzIG1lbW9yeSBtdXN0
IGJlIGJ6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQg
Zm9yIGJ5dGUtZXF1aXZhbGVuY2UuCisgICAgYnplcm8oJnRleHRNYXJrZXJEYXRhLCBzaXplb2Yo
VGV4dE1hcmtlckRhdGEpKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLmdldCgpLT5h
eE9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CisgICAgdGV4
dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwor
ICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOyAgICAK
K30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNDY1NDYpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVtb3ZlQVhJRChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kik7CiAgICAgICAgIGJvb2wgaXNJRGluVXNlKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1f
aWRzSW5Vc2UuY29udGFpbnMoaWQpOyB9CiAKKyAgICAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0
aWVzLgorICAgICAgICBzdGF0aWMgdm9pZCB0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlv
bihUZXh0TWFya2VyRGF0YSYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgICAgICBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRN
YXJrZXJEYXRhJik7CisgICAgICAgICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFz
aE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gPiBtX29iamVjdHM7CiAgICAg
ICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgQVhJRD4gbV9yZW5kZXJPYmplY3RNYXBwaW5nOwpJ
bmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAko
cmV2aXNpb24gNDY1NDYpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw2ICs2NTcsMjQgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKAogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0K
IAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jaG9yRWxlbWVu
dEZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIG9iaiA9IG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBheE9iaiA9IG9iai0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvYmopOworICAgIEVsZW1lbnQqIGFuY2hvciA9IGF4T2Jq
LT5hbmNob3JFbGVtZW50KCk7CisgICAgaWYgKCFhbmNob3IpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIFJlbmRlck9iamVjdCogYW5jaG9yUmVuZGVyZXIgPSBhbmNob3ItPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFhbmNob3JSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisg
ICAgcmV0dXJuIGFuY2hvclJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKGFuY2hvclJlbmRlcmVyKTsKK30KKyAgICAKIGNvbnN0IFN0cmluZyYgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQg
dG8gYWRkIHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDQ2NTQ2KQorKysgV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
Mjk0LDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBheE9iamVjdElEKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgc2V0QVhPYmplY3RJRCh1bnNpZ25lZCBheE9iamVj
dElEKSB7IG1faWQgPSBheE9iamVjdElEOyB9CiAgICAgCisgICAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGFuY2hvckVsZW1lbnRGb3JOb2RlKE5vZGUqKTsKICAgICB2aXJ0dWFsIEVsZW1l
bnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBFbGVt
ZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSW50
UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KQEAgLTM3
Myw4ICszNzQsNyBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzU2VudGVu
Y2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0OwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JikgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCwgYm9vbCAvKgotbGFzdElu
ZGV4T0sgKi8pIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgodW5zaWduZWQsIGJvb2wg
LypsYXN0SW5kZXhPSyAqLykgY29uc3QgeyByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7IH0KICAg
ICAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChp
bnQpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOyB9CiAgICAgdmlydHVhbCBpbnQg
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgeyBy
ZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA0NjU0NikKKysrIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE3Niw2NiArMTc2LDIxIEBAIHR5cGVkZWYgdW5zaWduZWQgTlNVSW50ZWdl
cjsKIAogc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyKiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykKIHsKLSAgICBpZiAodmlzaWJs
ZVBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFBvc2l0aW9uIGRlZXBQ
b3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9kZSA9IGRl
ZXBQb3Mubm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAoIWRvbU5vZGUpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoZG9tTm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7
Ci0gICAgICAgIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gdG9JbnB1dEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KGRvbU5vZGUpKTsKLSAgICAgICAgaWYgKGlucHV0RWxlbWVudCAm
JiBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICB9Ci0KLSAgICAvLyBsb2NhdGUgdGhlIHJlbmRlcmVyLCB3aGljaCBtdXN0IGV4aXN0
IGZvciBhIHZpc2libGUgZG9tIG5vZGUKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZG9t
Tm9kZS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQocmVuZGVyZXIpOwotCi0gICAgLy8gZmluZCBv
ciBjcmVhdGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgcmVuZGVyZXIKLSAgICBB
WE9iamVjdENhY2hlKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCk7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNy
ZWF0ZShyZW5kZXJlcik7Ci0KLSAgICAvLyBjcmVhdGUgYSB0ZXh0IG1hcmtlciwgYWRkaW5nIGFu
IElEIGZvciB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBpZiBuZWVkZWQKICAgICBUZXh0TWFya2Vy
RGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbih0ZXh0TWFya2VyRGF0YSwgdmlzaWJsZVBvcyk7CisgICAgaWYgKCF0
ZXh0TWFya2VyRGF0YS5heElEKQorICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIC8vIFRo
ZSBjb21waWxlciBjYW4gYWRkIHBhZGRpbmcgdG8gdGhpcyBzdHJ1Y3QuIAotICAgIC8vIFRoaXMg
bWVtb3J5IG11c3QgYmUgYnplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2Fu
IGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KLSAgICBiemVybygmdGV4dE1hcmtlckRh
dGEsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBv
YmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9k
ZTsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zLmFmZmlu
aXR5KCk7CiAgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHRl
eHRNYXJrZXJXaXRoQnl0ZXM6JnRleHRNYXJrZXJEYXRhIGxlbmd0aDpzaXplb2YodGV4dE1hcmtl
ckRhdGEpXTsKIH0KIAogc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyKFdlYkNvcmVUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQogewogICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIAogICAgIGlmICghW1tXZWJDb3JlVmlld0ZhY3Rv
cnkgc2hhcmVkRmFjdG9yeV0gZ2V0Qnl0ZXM6JnRleHRNYXJrZXJEYXRhIGZyb21UZXh0TWFya2Vy
OnRleHRNYXJrZXIgbGVuZ3RoOnNpemVvZih0ZXh0TWFya2VyRGF0YSldKQogICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IFZpc2libGVQb3NpdGlvbih0ZXh0TWFya2VyRGF0YS5ub2RlLCB0ZXh0TWFya2VyRGF0YS5vZmZz
ZXQsIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5KTsKLSAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlz
aWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlmIChkZWVwUG9zLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGRlZXBQb3Mubm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKLSAgICBBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAg
aWYgKCFjYWNoZS0+aXNJRGluVXNlKHRleHRNYXJrZXJEYXRhLmF4SUQpKQotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBpZiAoZGVlcFBvcy5ub2RlKCkgIT0gdGV4dE1h
cmtlckRhdGEubm9kZSB8fCBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgIT0gdGV4
dE1hcmtlckRhdGEub2Zmc2V0KQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0g
ICAgCi0gICAgcmV0dXJuIHZpc2libGVQb3M7CisgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnZp
c2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKHRleHRNYXJrZXJEYXRhKTsKIH0KIAogc3Rh
dGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JTdGFydE9mVGV4dE1hcmtlclJh
bmdlKFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZXJSYW5nZSkKQEAgLTQzNywyNCAr
MzkyLDYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTAogICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgcmFuZ2U6cmFu
Z2VdOwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhMaW5rRWxlbWVudEZvck5v
ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBSZW5kZXJPYmplY3QqIG9iaiA9IG5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGF4T2JqID0gb2JqLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKG9iaik7Ci0gICAgRWxlbWVudCogYW5jaG9yID0gYXhPYmotPmFuY2hvckVs
ZW1lbnQoKTsKLSAgICBpZiAoIWFuY2hvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZW5k
ZXJPYmplY3QqIGFuY2hvclJlbmRlcmVyID0gYW5jaG9yLT5yZW5kZXJlcigpOwotICAgIGlmICgh
YW5jaG9yUmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBhbmNo
b3JSZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShhbmNo
b3JSZW5kZXJlcik7Ci19Ci0KIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVu
dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOU1N0cmluZyogYXR0cmli
dXRlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIE5TUmFuZ2UgcmFuZ2UpCiB7CiAgICAg
aWYgKG9iamVjdCAmJiBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKSB7CkBA
IC01MDUsNyArNDQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4
dAogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoYXR0clN0cmluZywgbm9kZS0+cmVuZGVy
ZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdM
ZXZlbChhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwogICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJl
bmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVt
ZW50KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUxpbmtUZXh0QXR0cmlidXRlLCBBWExpbmtF
bGVtZW50Rm9yTm9kZShub2RlKSwgYXR0clN0cmluZ1JhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TGlua1RleHRBdHRyaWJ1
dGUsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKG5vZGUpLCBhdHRy
U3RyaW5nUmFuZ2UpOwogICAgIAogICAgIC8vIGRvIHNwZWxsaW5nIGxhc3QgYmVjYXVzZSBpdCB0
ZW5kcyB0byBicmVhayB1cCB0aGUgcmFuZ2UKICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxs
aW5nKGF0dHJTdHJpbmcsIG5vZGUsIG9mZnNldCwgYXR0clN0cmluZ1JhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33726</attachid>
            <date>2009-07-29 11:08:12 -0700</date>
            <delta_ts>2009-07-29 13:28:14 -0700</delta_ts>
            <desc>patch (minor update to make sure TextMarkerData is bzerod right away in the method)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12213</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjU0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDctMjkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc4MDcgLSBBWDogbW92ZSByZS11c2FibGUgY29kZSBpbnRvIG1vcmUgY29tbW9uIGFy
ZWFzIGZvciBvdGhlciBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI3ODA3CisKKyAgICAgICAgTW92ZXMgc29tZSBhY2Nlc3NpYmlsaXR5
IGNvZGUgdGhhdCB3YXMgaW4gdGhlIE1hYyBmaWxlIHRvIGEgbW9yZSBjb21tb24gcGxhY2Ugc28g
CisgICAgICAgIGl0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIHBsYXRmb3Jtcy4gCisgICAgICAgIFRo
aXMgaW5jbHVkZXM6CisgICAgICAgICAgIE1ha2luZyBUZXh0TWFya2VyRGF0YSBmcm9tIGEgVmlz
aWJsZVBvc2l0aW9uLgorICAgICAgICAgICBNYWtpbmcgYSBWaXNpYmxlUG9zaXRpb24gZnJvbSBU
ZXh0TWFya2VyRGF0YS4KKyAgICAgICAgICAgRmluZGluZyB0aGUgYW5jaG9yIGFjY2Vzc2liaWxp
dHkgb2JqZWN0IGZvciBhbiBhcmJpdHJhcnkgTm9kZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKHRleHRNYXJrZXJGb3JW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAodmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KToKKwogMjAwOS0wNy0yOSAg
SmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDQ2NTQ2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlSGVh
ZGVyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCisjaW5j
bHVkZSAiSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMzM3LDUgKzMzOCw2
MSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlCiAgICAgICAgIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmopLT5zZXRBcmlhUm9sZSgp
OwogfQogI2VuZGlmCisgICAgCitWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRh
KQoreworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKHRl
eHRNYXJrZXJEYXRhLm5vZGUsIHRleHRNYXJrZXJEYXRhLm9mZnNldCwgdGV4dE1hcmtlckRhdGEu
YWZmaW5pdHkpOworICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFs
ZW50KCk7CisgICAgaWYgKGRlZXBQb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZGVlcFBvcy5u
b2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOworICAgIAorICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gcmVuZGVy
ZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlLT5pc0lEaW5V
c2UodGV4dE1hcmtlckRhdGEuYXhJRCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKKyAgICAKKyAgICBpZiAoZGVlcFBvcy5ub2RlKCkgIT0gdGV4dE1hcmtlckRhdGEubm9kZSB8
fCBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgIT0gdGV4dE1hcmtlckRhdGEub2Zm
c2V0KQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisgICAgCisgICAgcmV0dXJu
IHZpc2libGVQb3M7Cit9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JW
aXNpYmxlUG9zaXRpb24oVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpCit7CisgICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSBi
emVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBi
eXRlLWVxdWl2YWxlbmNlLgorICAgIC8vIFRoaXMgYWxzbyBhbGxvd3MgY2FsbGVycyB0byBjaGVj
ayBmb3IgZmFpbHVyZSBieSBsb29raW5nIGF0IHRleHRNYXJrZXJEYXRhIHVwb24gcmV0dXJuLgor
ICAgIGJ6ZXJvKCZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7CisgICAg
CisgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOworICAgIE5v
ZGUqIGRvbU5vZGUgPSBkZWVwUG9zLm5vZGUoKTsKKyAgICBBU1NFUlQoZG9tTm9kZSk7CisgICAg
aWYgKCFkb21Ob2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGRvbU5vZGUtPmlz
SFRNTEVsZW1lbnQoKSkgeworICAgICAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHRv
SW5wdXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihkb21Ob2RlKSk7CisgICAgICAgIGlm
IChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gbG9jYXRlIHRoZSByZW5kZXJlciwg
d2hpY2ggbXVzdCBleGlzdCBmb3IgYSB2aXNpYmxlIGRvbSBub2RlCisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGRvbU5vZGUtPnJlbmRlcmVyKCk7CisgICAgQVNTRVJUKHJlbmRlcmVyKTsK
KyAgICAKKyAgICAvLyBmaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3Ig
dGhpcyByZW5kZXJlcgorICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gcmVuZGVyZXItPmRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
b2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKKyAgICAKKyAgICB0ZXh0TWFya2Vy
RGF0YS5heElEID0gb2JqLmdldCgpLT5heE9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEu
bm9kZSA9IGRvbU5vZGU7CisgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlz
aWJsZVBvcy5hZmZpbml0eSgpOyAgICAKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNDY1NDYp
CisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw2ICs5NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVt
b3ZlQVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgICAgIGJvb2wgaXNJRGluVXNlKEFY
SUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1faWRzSW5Vc2UuY29udGFpbnMoaWQpOyB9CiAKKyAgICAg
ICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0aWVzLgorICAgICAgICBzdGF0aWMgdm9pZCB0ZXh0TWFy
a2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihUZXh0TWFya2VyRGF0YSYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpOworICAgICAgICBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CisgICAgICAgICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9i
amVjdD4gPiBtX29iamVjdHM7CiAgICAgICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgQVhJRD4g
bV9yZW5kZXJPYmplY3RNYXBwaW5nOwpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gNDY1NDYpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw2
ICs2NTcsMjQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKAogICAg
IG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0KIAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eU9iamVjdDo6YW5jaG9yRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5k
ZXJPYmplY3QqIG9iaiA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFvYmopCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBheE9iaiA9
IG9iai0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvYmopOworICAg
IEVsZW1lbnQqIGFuY2hvciA9IGF4T2JqLT5hbmNob3JFbGVtZW50KCk7CisgICAgaWYgKCFhbmNo
b3IpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlck9iamVjdCogYW5jaG9yUmVu
ZGVyZXIgPSBhbmNob3ItPnJlbmRlcmVyKCk7CisgICAgaWYgKCFhbmNob3JSZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIGFuY2hvclJlbmRlcmVyLT5kb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2hvclJlbmRlcmVyKTsKK30KKyAg
ICAKIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRkIHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMu
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJl
dmlzaW9uIDQ2NTQ2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBheE9iamVjdElEKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgc2V0QVhP
YmplY3RJRCh1bnNpZ25lZCBheE9iamVjdElEKSB7IG1faWQgPSBheE9iamVjdElEOyB9CiAgICAg
CisgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFuY2hvckVsZW1lbnRGb3JOb2RlKE5v
ZGUqKTsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KQEAgLTM3Myw4ICszNzQsNyBAQCBwdWJsaWM6CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzU2VudGVuY2VTdGFydFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYpIGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoRW5kUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1
bnNpZ25lZCwgYm9vbCAvKgotbGFzdEluZGV4T0sgKi8pIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOyB9CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgodW5zaWduZWQsIGJvb2wgLypsYXN0SW5kZXhPSyAqLykgY29uc3QgeyByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7IH0KICAgICAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IHsgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOyB9CiAgICAgdmlydHVhbCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShy
ZXZpc2lvbiA0NjU0NikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2NiArMTc2LDIxIEBAIHR5
cGVkZWYgdW5zaWduZWQgTlNVSW50ZWdlcjsKIAogc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyKiB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvcykKIHsKLSAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7
Ci0gICAgTm9kZSogZG9tTm9kZSA9IGRlZXBQb3Mubm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2Rl
KTsKLSAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoZG9t
Tm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7Ci0gICAgICAgIElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50ID0gdG9JbnB1dEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGRvbU5vZGUpKTsKLSAg
ICAgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgp
KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICAvLyBsb2NhdGUgdGhlIHJl
bmRlcmVyLCB3aGljaCBtdXN0IGV4aXN0IGZvciBhIHZpc2libGUgZG9tIG5vZGUKLSAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gZG9tTm9kZS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQocmVu
ZGVyZXIpOwotCi0gICAgLy8gZmluZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3Qg
Zm9yIHRoaXMgcmVuZGVyZXIKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHJlbmRlcmVyLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7Ci0KLSAgICAvLyBjcmVhdGUg
YSB0ZXh0IG1hcmtlciwgYWRkaW5nIGFuIElEIGZvciB0aGUgQWNjZXNzaWJpbGl0eU9iamVjdCBp
ZiBuZWVkZWQKICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICBBWE9iamVj
dENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbih0ZXh0TWFya2VyRGF0YSwg
dmlzaWJsZVBvcyk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorICAgICAgICByZXR1
cm4gbmlsOwogICAgIAotICAgIC8vIFRoZSBjb21waWxlciBjYW4gYWRkIHBhZGRpbmcgdG8gdGhp
cyBzdHJ1Y3QuIAotICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgYnplcm8nZCBzbyBpbnN0YW5j
ZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4K
LSAgICBiemVybygmdGV4dE1hcmtlckRhdGEsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKTsKLSAgICB0ZXh0
TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSBk
ZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZm
aW5pdHkgPSB2aXNpYmxlUG9zLmFmZmluaXR5KCk7CiAgICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIHRleHRNYXJrZXJXaXRoQnl0ZXM6JnRleHRNYXJrZXJEYXRh
IGxlbmd0aDpzaXplb2YodGV4dE1hcmtlckRhdGEpXTsKIH0KIAogc3RhdGljIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKFdlYkNvcmVUZXh0TWFya2VyKiB0ZXh0
TWFya2VyKQogewogICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIAogICAg
IGlmICghW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gZ2V0Qnl0ZXM6JnRleHRN
YXJrZXJEYXRhIGZyb21UZXh0TWFya2VyOnRleHRNYXJrZXIgbGVuZ3RoOnNpemVvZih0ZXh0TWFy
a2VyRGF0YSldKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFZpc2libGVQb3NpdGlvbih0ZXh0TWFya2VyRGF0YS5u
b2RlLCB0ZXh0TWFya2VyRGF0YS5vZmZzZXQsIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5KTsKLSAg
ICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlm
IChkZWVwUG9zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0g
ICAgCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRlZXBQb3Mubm9kZSgpLT5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKICAgICAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZS0+aXNJRGluVXNlKHRleHRNYXJrZXJE
YXRhLmF4SUQpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBpZiAo
ZGVlcFBvcy5ub2RlKCkgIT0gdGV4dE1hcmtlckRhdGEubm9kZSB8fCBkZWVwUG9zLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkgIT0gdGV4dE1hcmtlckRhdGEub2Zmc2V0KQotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgCi0gICAgcmV0dXJuIHZpc2libGVQb3M7CisgICAg
cmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKHRl
eHRNYXJrZXJEYXRhKTsKIH0KIAogc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JTdGFydE9mVGV4dE1hcmtlclJhbmdlKFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRN
YXJrZXJSYW5nZSkKQEAgLTQzNywyNCArMzkyLDYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRIZWFkaW5nTAogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6QCJB
WEhlYWRpbmdMZXZlbCIgcmFuZ2U6cmFuZ2VdOwogfQogCi1zdGF0aWMgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhMaW5rRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBSZW5kZXJPYmpl
Y3QqIG9iaiA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqID0gb2JqLT5kb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG9iaik7Ci0gICAgRWxlbWVudCog
YW5jaG9yID0gYXhPYmotPmFuY2hvckVsZW1lbnQoKTsKLSAgICBpZiAoIWFuY2hvcikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGFuY2hvclJlbmRlcmVyID0gYW5jaG9y
LT5yZW5kZXJlcigpOwotICAgIGlmICghYW5jaG9yUmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIHJldHVybiBhbmNob3JSZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShhbmNob3JSZW5kZXJlcik7Ci19Ci0KIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRy
U3RyaW5nLCBOU1N0cmluZyogYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3Qs
IE5TUmFuZ2UgcmFuZ2UpCiB7CiAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCgpKSB7CkBAIC01MDUsNyArNDQyLDcgQEAgc3RhdGljIHZvaWQgQVhB
dHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dAogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUo
YXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKICAgICBBWEF0
dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigp
LCBhdHRyU3RyaW5nUmFuZ2UpOwogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxl
dmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7Ci0gICAg
QVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUxp
bmtUZXh0QXR0cmlidXRlLCBBWExpbmtFbGVtZW50Rm9yTm9kZShub2RlKSwgYXR0clN0cmluZ1Jh
bmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5TGlua1RleHRBdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVs
ZW1lbnRGb3JOb2RlKG5vZGUpLCBhdHRyU3RyaW5nUmFuZ2UpOwogICAgIAogICAgIC8vIGRvIHNw
ZWxsaW5nIGxhc3QgYmVjYXVzZSBpdCB0ZW5kcyB0byBicmVhayB1cCB0aGUgcmFuZ2UKICAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKGF0dHJTdHJpbmcsIG5vZGUsIG9mZnNldCwgYXR0
clN0cmluZ1JhbmdlKTsK
</data>
<flag name="review"
          id="17934"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>