<?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>63527</bug_id>
          
          <creation_ts>2011-06-28 05:13:39 -0700</creation_ts>
          <short_desc>Write a tools library to manipulate Visual Studio project files</short_desc>
          <delta_ts>2011-07-07 23:51:47 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63528</dependson>
    
    <dependson>64148</dependson>
          <blocked>61772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>morrita</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>428807</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-28 05:13:39 -0700</bug_when>
    <thetext>The webkit-file tool project requires a module to manipulate Visual Studio project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433917</commentid>
    <comment_count>1</comment_count>
      <attachid>100080</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-07 23:40:40 -0700</bug_when>
    <thetext>Created attachment 100080
work-in-progress

very early draft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433922</commentid>
    <comment_count>2</comment_count>
      <attachid>100080</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 23:50:47 -0700</bug_when>
    <thetext>Comment on attachment 100080
work-in-progress

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

&gt; Tools/Scripts/webkitpy/common/project/vcproj.py:40
&gt; +class VCProjectException(ProjectException):
&gt; +    def __init__(self, message):
&gt; +        super(VCProjectException, self).__init__(message)

What&apos;s the motivation for having these complicated exception class hierarchies?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433923</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 23:51:47 -0700</bug_when>
    <thetext>It&apos;s important for this code to have tests, but I presume you&apos;ll add them in later iterations of these patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100080</attachid>
            <date>2011-07-07 23:40:40 -0700</date>
            <delta_ts>2011-07-07 23:50:47 -0700</delta_ts>
            <desc>work-in-progress</desc>
            <filename>bug-63527-20110708154038.patch</filename>
            <type>text/plain</type>
            <size>12781</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2MTEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZGMyNTA0NjAxODRlZTdhMTlkNzhiMDNiMjUwMjhhZWJi
NmNlYTVlLi5iNWYxZjQ3ZjA3N2U3YzA1ZjA4M2Q0NmM1NWU2ZTE1M2UyODNiMTlkIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDctMDcgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV3JpdGUgYSB0b29scyBsaWJyYXJ5IHRvIG1hbmlwdWxhdGUgVmlzdWFs
IFN0dWRpbyBwcm9qZWN0IGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsYXNzZXMgYW5kIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIFZpc3VhbCBT
dHVkaW8gcHJvamVjdCBmaWxlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3Byb2plY3QvdmNwcm9qLnB5OgorCiAyMDExLTA3LTA3ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXgs
IHJlbW92ZSBvbGQgZmlsZXMgZnJvbSB0aGUgdHJlZSBhbmQgdXBkYXRlIHBhdGhzIHRvIG5ldyBv
bmVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJvamVjdC9f
X2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2plY3QvX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWY2NWJlZTViYjc3ZTk2ZWJjN2NkOWM0NzY0MDY5MGZiZGE4YWMx
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2pl
Y3QvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNl
YXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L3ZjcHJvai5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3Byb2plY3QvdmNwcm9qLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3OWZmNjVlZDY2
Njc5MWJhNjg2NjE3NWM4NjgwOTIyMWQ4ZjVmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L3ZjcHJvai5weQpAQCAtMCwwICsxLDI0MSBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKKwor
ZnJvbSB3ZWJraXRweS5jb21tb24ucHJvamVjdC5iYXNlIGltcG9ydCBQcm9qZWN0LCBQcm9qZWN0
Q29tbW9uLCBQcm9qZWN0UmVhZGVyLCBQcm9qZWN0V3JpdGVyLCBQcm9qZWN0RXhjZXB0aW9uLCBQ
cm9qZWN0RmlsZSwgUHJvamVjdEZpbGVDb250YWluZXIKKworCitjbGFzcyBWQ1Byb2plY3RFeGNl
cHRpb24oUHJvamVjdEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2Up
OgorICAgICAgICBzdXBlcihWQ1Byb2plY3RFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG1lc3Nh
Z2UpCisKKworY2xhc3MgVkNFbGVtZW50KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuYXR0cmlidXRl
cyA9IFtdCisgICAgICAgIHNlbGYuY2hpbGRyZW4gPSBbXQorICAgICAgICBzZWxmLmF0dHJfbmFt
ZSA9ICcnICAgICAgICMgc3RvcmUgJ05hbWUnIGF0dHJpYnV0ZSB2YWx1ZSBzZXBhcmF0ZWx5Cisg
ICAgICAgIHNlbGYuYXR0cl9maWxlX25hbWUgPSAnJyAgIyBzdG9yZSBmaWxlIG5hbWUgZnJvbSAn
UmVsYXRpdmVQYXRoJyBhdHRyaWJ1dGUgc2VwYXJhdGVseQorCisgICAgZGVmIGFkZF9hdHRyaWJ1
dGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6LTFdICAjIHN0
cmlwIHF1b3RlcworICAgICAgICBpZiBuYW1lID09ICdOYW1lJzoKKyAgICAgICAgICAgIHNlbGYu
YXR0cl9uYW1lID0gdmFsdWUKKyAgICAgICAgaWYgbmFtZSA9PSAnUmVsYXRpdmVQYXRoJzoKKyAg
ICAgICAgICAgIHNlbGYuYXR0cl9maWxlX25hbWUgPSB2YWx1ZS5yc3BsaXQoJ1xcJywgMSlbLTFd
ICAjIHN0b3JlIGZpbGUgbmFtZSBvbmx5LCB3aXRob3V0IHByZWNlZGluZyBwYXRoCisgICAgICAg
IHNlbGYuYXR0cmlidXRlcy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKKworCitjbGFzcyBWQ1Byb2pl
Y3QoUHJvamVjdCk6CisgICAgIiIiQ2xhc3MgY29udGFpbmluZyBhbGwgZGF0YSBzdHJ1Y3R1cmVz
IGRlc2NyaWJpbmcgYW4gVmlzdWFsIFN0dWRpbyBwcm9qZWN0IGZpbGUuIiIiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29tbW9uLCBwcm9qZWN0X2ZpbGVfYWJzcGF0aCk6CisgICAgICAgIHN1
cGVyKFZDUHJvamVjdCwgc2VsZikuX19pbml0KGNvbW1vbiwgcHJvamVjdF9maWxlX2Fic3BhdGgp
CisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IGNvbW1vbi5maWxlc3lzdGVtCisgICAgICAgIHNl
bGYudmlzdWFsX3N0dWRpb19wcm9qZWN0ID0gTm9uZQorICAgICAgICBzZWxmLnhtbF9saW5lID0g
JycKKyAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKworICAgICMgLS0tIG1hbmlwdWxhdGlvbiAt
LS0KKworICAgIGRlZiBhZGRfbmV3X3N1Yl9ncm91cChzZWxmLCBwYXJlbnRfZ3JvdXAsIHBhdGgp
OgorICAgICAgICAiIiJBZGQgYSBzaW5nbGUgbmV3IHN1Yi1ncm91cC4KKworICAgICAgICBBZGQg
YSBuZXcgc3ViZ3JvdXAgdW5kZXIgcGFyZW50X2dyb3VwIGZvciBmaWxlcyB3aXRoIHRoZSBnaXZl
biBwYXRoLgorICAgICAgICAoU2V0cyB0aGUgJ3BhdGgnIGZpZWxkIGZvciB0aGUgZ3JvdXAgdG8g
dGhlIHBhc3NlZC1pbiBwYXRoLikKKyAgICAgICAgIiIiCisKKyAgICBkZWYgYWRkX25ld19zdWJf
Z3JvdXBzKHNlbGYsIGdyb3VwLCBzdWJfcGF0aCk6CisgICAgICAgICIiIkFkZCBuZXcgcHJvamVj
dCBncm91cHMuCisKKyAgICAgICAgUmVjdXJzaXZlbHkgYWRkcyBhIG5ldyBwcm9qY3Qgc3ViLWdy
b3VwIHRvIGdyb3VwIGZvciBldmVyeSBkaXJlY3RvcnkgZ2l2ZW4gaW4gc3ViX3BhdGguCisgICAg
ICAgIFJldHVybnMgdGhlIGxhc3QgKGlubmVybW9zdCkgc3ViLWdyb3VwLgorICAgICAgICAiIiIK
KyAgICAgICAgZGlyZWN0b3J5X2xpc3QgPSBzZWxmLmZpbGVzeXN0ZW0uc3BsaXRfcGF0aChzdWJf
cGF0aCkKKyAgICAgICAgZm9yIGRpciBpbiBkaXJlY3RvcnlfbGlzdDoKKyAgICAgICAgICAgIGdy
b3VwID0gc2VsZi5hZGRfbmV3X3N1Yl9ncm91cChncm91cCwgZGlyKQorICAgICAgICByZXR1cm4g
Z3JvdXAKKworICAgIGRlZiBhZGRfZmlsZShzZWxmLCByZWxfcGF0aCwgZmlsZV9uYW1lLCBhZGRf
bmV3X3N1Ymdyb3Vwcz1UcnVlKToKKyAgICAgICAgIiIiQWRkIGEgbmV3IGZpbGUgdG8gdGhlIHBy
b2plY3QuCisKKyAgICAgICAgcmVsX3BhdGg6IHBhdGggcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qg
ZmlsZSByb290IGRpcmVjdG9yeSAoU09VUkNFX1JPT1QpCisgICAgICAgIGZpbGVfbmFtZTogZmls
ZSBuYW1lIChpbmNsLiBleHRlbnNpb24pIG9mIHRoZSBuZXcgZmlsZQorICAgICAgICBhZGRfbmV3
X3N1Ymdyb3VwczogYWRkIG5ldyBwcm9qZWN0IGdyb3VwcyBpZiBubyBwcm9qZWN0IGdyb3VwcyBl
eGlzdCBmb3IgdGhlIGdpdmVuIHBhdGg/CisgICAgICAgICIiIgorCisKK2NsYXNzIFZDUHJvamVj
dFJlYWRlcihQcm9qZWN0UmVhZGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbW9uKToK
KyAgICAgICAgc3VwZXIoVkNQcm9qZWN0UmVhZGVyLCBzZWxmKS5fX2luaXRfXyhjb21tb24pCisK
KyAgICBkZWYgX3B1c2hfZWxlbWVudChzZWxmLCBlbGVtZW50KToKKyAgICAgICAgaWYgc2VsZi5f
ZWxlbWVudF9zdGFjazoKKyAgICAgICAgICAgIHBhcmVudF9lbGVtZW50ID0gc2VsZi5fZWxlbWVu
dF9zdGFja1stMV0KKyAgICAgICAgICAgIHBhcmVudF9lbGVtZW50LmNoaWxkcmVuLmFwcGVuZChl
bGVtZW50KQorICAgICAgICAgICAgaWYgZWxlbWVudC5uYW1lID09ICdGaWx0ZXInOgorICAgICAg
ICAgICAgICAgIGlmIG5vdCBlbGVtZW50LmF0dHJfbmFtZToKKyAgICAgICAgICAgICAgICAgICAg
cmFpc2UgVkNQcm9qZWN0RXhjZXB0aW9uKCJGaWx0ZXIgd2l0aG91dCBhICdOYW1lJyBhdHRyaWJ1
dGUgZW5jb3VudGVyZWQhIikKKyAgICAgICAgICAgICAgICBpZiBwYXJlbnRfZWxlbWVudC5uYW1l
ID09ICdGaWx0ZXInOgorICAgICAgICAgICAgICAgICAgICBwYXJlbnRfZmlsdGVyX2VsZW1lbnQg
PSBwYXJlbnRfZWxlbWVudAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIHBhcmVudF9maWx0ZXJfZWxlbWVudCA9IHNlbGYucHJvamVjdC52aXN1YWxfc3R1ZGlvX3By
b2plY3QKKyAgICAgICAgICAgICAgICBpZiBwYXJlbnRfZmlsdGVyX2VsZW1lbnQuaXNfZmlsdGVy
OgorICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZV9wYXRoID0gc2VsZi5maWxlc3lzdGVtLmpv
aW4ocGFyZW50X2ZpbHRlcl9lbGVtZW50LmFic29sdXRlX3BhdGgsIGVsZW1lbnQuYXR0cl9uYW1l
KQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbGVzeXN0ZW0uaXNkaXIoYWJzb2x1dGVf
cGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlzX2ZpbHRlciA9IFRydWUK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWJzb2x1dGVfcGF0aCA9IGFic29sdXRl
X3BhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucmVsYXRpdmVfcGF0aCA9IGVs
ZW1lbnQuYXR0cl9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkX2Zp
bHRlcnMgPSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2ZpbHRlcl9lbGVtZW50
LmNoaWxkX2ZpbHRlcnNbZWxlbWVudC5hdHRyX25hbWVdID0gZWxlbWVudAorICAgICAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pc19maWx0ZXIg
PSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQuaXNfZmlsdGVyID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHNlbGYu
cHJvamVjdC52aXN1YWxfc3R1ZGlvX3Byb2plY3Q6CisgICAgICAgICAgICAgICAgcmFpc2UgVkNQ
cm9qZWN0RXhjZXB0aW9uKCJNdWx0aXBsZSByb290IGVsZW1lbnRzIGVuY291bnRlcmVkOiAnPCVz
PicgYW5kICc8JXM+JyEiICUgKHNlbGYudmlzdWFsX3N0dWRpb19wcm9qZWN0Lm5hbWUsIGVsZW1l
bnQubmFtZSkpCisgICAgICAgICAgICBpZiBlbGVtZW50Lm5hbWUgIT0gJ1Zpc3VhbFN0dWRpb1By
b2plY3QnOgorICAgICAgICAgICAgICAgIHJhaXNlIFZDUHJvamVjdEV4Y2VwdGlvbigiVW5leHBl
Y3RlZCByb290IGVsZW1lbnQgJyVzJyBlbmNvdW50ZXJlZCAtICdWaXN1YWxTdHVkaW9Qcm9qZWN0
JyBleHBlY3RlZCEiICUgZWxlbWVudC5uYW1lKQorICAgICAgICAgICAgc2VsZi5wcm9qZWN0LnZp
c3VhbF9zdHVkaW9fcHJvamVjdCA9IGVsZW1lbnQKKyAgICAgICAgICAgIHNlbGYucHJvamVjdC52
aXN1YWxfc3R1ZGlvX3Byb2plY3QuaXNfZmlsdGVyID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5w
cm9qZWN0LnZpc3VhbF9zdHVkaW9fcHJvamVjdC5yZWxhdGl2ZV9wYXRoID0gJy4nCisgICAgICAg
ICAgICBzZWxmLnByb2plY3QudmlzdWFsX3N0dWRpb19wcm9qZWN0LmFic29sdXRlX3BhdGggPSBz
ZWxmLmNvbW1vbi5wcm9qZWN0X3Jvb3RfYWJzcGF0aAorICAgICAgICAgICAgc2VsZi5wcm9qZWN0
LnZpc3VhbF9zdHVkaW9fcHJvamVjdC5jaGlsZF9maWx0ZXJzID0ge30KKyAgICAgICAgc2VsZi5f
ZWxlbWVudF9zdGFjay5hcHBlbmQoZWxlbWVudCkKKworICAgIGRlZiBfbWF0Y2hfY2xvc2luZ19i
cmFja2V0KHNlbGYsIHN0cik6CisgICAgICAgIGlmIHN0ciA9PSAnPic6CisgICAgICAgICAgICAi
IiIgc3RhcnQgdGFnIGZpbmlzaGVkLCByZWFkIGNoaWxkcmVuICIiIgorICAgICAgICAgICAgc2Vs
Zi5fcHVzaF9lbGVtZW50KHNlbGYuX29wZW5lZF9lbGVtZW50KQorICAgICAgICAgICAgc2VsZi5f
b3BlbmVkX2VsZW1lbnQgPSBOb25lCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBp
ZiBzdHIgPT0gJy8+JzoKKyAgICAgICAgICAgICIiIiBzdGFydCB0YWcgZmluaXNoZWQsIG5vIGNo
aWxkcmVuICIiIgorICAgICAgICAgICAgc2VsZi5fcHVzaF9lbGVtZW50KHNlbGYuX29wZW5lZF9l
bGVtZW50KQorICAgICAgICAgICAgc2VsZi5fb3BlbmVkX2VsZW1lbnQgPSBOb25lCisgICAgICAg
ICAgICBzZWxmLl9lbGVtZW50X3N0YWNrLnBvcCgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBwYXJzZV9wcm9qZWN0X2ZpbGUoc2VsZiwg
ZmlsZV9wYXRoKToKKyAgICAgICAgc2VsZi5wcm9qZWN0LnZpc3VhbF9zdHVkaW9fcHJvamVjdCA9
IE5vbmUKKyAgICAgICAgc2VsZi5wcm9qZWN0LnhtbF9saW5lID0gJycKKyAgICAgICAgc2VsZi5f
ZWxlbWVudF9zdGFjayA9IFtdCisgICAgICAgIHNlbGYuX2xhc3RfZWxlbWVudCA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fb3BlbmVkX2VsZW1lbnQgPSBOb25lCisgICAgICAgIHhtbF9zdGFydF9wYXR0
ZXJuID0gcmUuY29tcGlsZSgnPFw/eG1sICcpCisgICAgICAgIGVsZW1fc3RhcnRfcGF0dGVybiA9
IHJlLmNvbXBpbGUoJzwoW0EtWmEtel0rKScpCisgICAgICAgIGVsZW1fZW5kX3BhdHRlcm4gPSBy
ZS5jb21waWxlKCc8LyhbQS1aYS16XSspJykKKyAgICAgICAgYXR0cl9wYXR0ZXJuID0gcmUuY29t
cGlsZSgnKFtBLVphLXpdKyk9KCJbXiJdKiIpJykKKyAgICAgICAgd2l0aCBzZWxmLmZpbGVzeXN0
ZW0ub3Blbl9iaW5hcnlfZmlsZV9mb3JfcmVhZGluZyhmaWxlX3BhdGgpIGFzIHNlbGYuX2ZpbGU6
CisgICAgICAgICAgICBmb3Igc2VsZi5fbGluZSBpbiBzZWxmLl9maWxlOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2xpbmUgPSBzZWxmLl9saW5lLmRlY29kZSgnV2luZG93cy0xMjUyJykKKyAgICAg
ICAgICAgICAgICBzZWxmLl9saW5lID0gc3RyaW5nLnN0cmlwKHNlbGYuX2xpbmUpCisgICAgICAg
ICAgICAgICAgaWYgc2VsZi5fb3BlbmVkX2VsZW1lbnQ6CisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX21hdGNoX2Nsb3NpbmdfYnJhY2tldChzZWxmLl9saW5lKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gYXR0cl9wYXR0
ZXJuLm1hdGNoKHNlbGYuX2xpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAg
ICAgICAgICAgICAgICAgICAgICAgIiIiIGFkZCBhdHRyaWJ1dGUgKyB2YWx1ZSAiIiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX29wZW5lZF9lbGVtZW50LmFkZF9hdHRyaWJ1dGUobWF0
Y2guZ3JvdXAoMSksIG1hdGNoLmdyb3VwKDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVkNQcm9qZWN0RXhjZXB0aW9uKCJVbmV4
cGVjdGVkIHN0cmluZyAnJXMnIGluc2lkZSBlbGVtZW50ICclcyc6IC0gQXR0cmlidXRlIG9yIGNs
b3NpbmcgJz4nIG9yICcvPicgZXhwZWN0ZWQhIiAlIChzZWxmLl9saW5lLCBzZWxmLl9vcGVuZWRf
ZWxlbWVudC5uYW1lKSkKKyAgICAgICAgICAgICAgICBtYXRjaCA9IGVsZW1fc3RhcnRfcGF0dGVy
bi5tYXRjaChzZWxmLl9saW5lKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcGVuZWRfZWxlbWVudCA9IFZDRWxlbWVudChtYXRjaC5ncm91cCgx
KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF0Y2hfY2xvc2luZ19icmFja2V0KHNlbGYu
X2xpbmVbbWF0Y2guZW5kKCk6XSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICBtYXRjaCA9IGVsZW1fZW5kX3BhdHRlcm4ubWF0Y2goc2VsZi5fbGluZSkKKyAg
ICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYu
X2VsZW1lbnRfc3RhY2s6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWQ1Byb2plY3RF
eGNlcHRpb24oIkNsb3NpbmcgdGFnICAnJXMnIGZvdW5kIG9uIG91dGVybW9zdCBsZXZlbCEiICUg
c2VsZi5fbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2guZ3JvdXAoMSkgIT0gc2Vs
Zi5fZWxlbWVudF9zdGFja1stMV0ubmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IFZDUHJvamVjdEV4Y2VwdGlvbigiTWlzbWF0Y2hlZCBjbG9zaW5nIHRhZyAnPC8lcz4nIGVuY291
bnRlcmVkIC0gJzwvJXM+JyBleHBlY3RlZCEiICUgKG1hdGNoLmdyb3VwKDEpLCBzZWxmLl9lbGVt
ZW50X3N0YWNrWy0xXS5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZWxlbWVudF9z
dGFjay5wb3AoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAg
IG1hdGNoID0geG1sX3N0YXJ0X3BhdHRlcm4ubWF0Y2goc2VsZi5fbGluZSkKKyAgICAgICAgICAg
ICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wcm9qZWN0LnhtbF9s
aW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVkNQcm9qZWN0RXhjZXB0aW9uKCJV
bmV4cGVjdGVkIDJuZCA8P3htbD8+IGxpbmUgZW5jb3VudGVyZWQ6ICclcychIiAlIHNlbGYuX2xp
bmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvamVjdC54bWxfbGluZSA9IHNlbGYuX2xp
bmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByYWlzZSBW
Q1Byb2plY3RFeGNlcHRpb24oIlVuZXhwZWN0ZWQgbGluZSAnJXMnIC0gZWxlbWVudCBvciA8P3ht
bD8+IGV4cGVjdGVkISIgJSBzZWxmLl9saW5lKQorCisKK2NsYXNzIFZDUHJvamVjdFdyaXRlcihQ
cm9qZWN0V3JpdGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvamVjdCk6CisgICAgICAg
IHN1cGVyKFZDUHJvamVjdFdyaXRlciwgc2VsZikuX19pbml0X18ocHJvamVjdCkKKworICAgIGRl
ZiBfd3JpdGVfdG9fZmlsZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5fZmlsZS53cml0ZSh0
ZXh0LmVuY29kZSgnV2luZG93cy0xMjUyJykpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IF9lbGVtZW50X3NvcnRpbmdfa2V5KGVsZW1lbnQpOgorICAgICAgICBpZiBlbGVtZW50LmF0dHJf
ZmlsZV9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZS5sb3dlcigpICsgJ34n
ICsgZWxlbWVudC5hdHRyX2ZpbGVfbmFtZS5sb3dlcigpCisgICAgICAgIGlmIGVsZW1lbnQuYXR0
cl9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZS5sb3dlcigpICsgJ34nICsg
ZWxlbWVudC5hdHRyX25hbWUubG93ZXIoKQorICAgICAgICByZXR1cm4gZWxlbWVudC5uYW1lLmxv
d2VyKCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3Nob3VsZF9zb3J0X2NoaWxkcmVu
KGVsZW1lbnRfbmFtZSk6CisgICAgICAgIGlmIGVsZW1lbnRfbmFtZSA9PSAnRmlsdGVyJzoKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF93
cml0ZUVsZW1lbnQoc2VsZiwgZWxlbWVudCwgaW5kZW50KToKKyAgICAgICAgc3ViX2luZGVudCA9
IGluZGVudCArICdcdCcKKyAgICAgICAgc2VsZi5fd3JpdGVfdG9fZmlsZShpbmRlbnQgKyAnPCcg
KyBlbGVtZW50Lm5hbWUpCisgICAgICAgIGlmIGVsZW1lbnQuYXR0cmlidXRlczoKKyAgICAgICAg
ICAgIHNlbGYuX3dyaXRlX3RvX2ZpbGUoJ1xyXG4nKQorICAgICAgICAgICAgZm9yIGF0dHJpYnV0
ZV9uYW1lLCBhdHRyaWJ1dGVfdmFsdWUgaW4gZWxlbWVudC5hdHRyaWJ1dGVzOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3dyaXRlX3RvX2ZpbGUoc3ViX2luZGVudCArIGF0dHJpYnV0ZV9uYW1lICsg
Jz0iJyArIGF0dHJpYnV0ZV92YWx1ZSArICciXHJcbicpCisgICAgICAgICAgICBpZiBub3QgZWxl
bWVudC5jaGlsZHJlbiBhbmQgKGVsZW1lbnQubmFtZSA9PSAnVG9vbCcgb3IgZWxlbWVudC5uYW1l
ID09ICdQbGF0Zm9ybScpOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3RvX2ZpbGUoaW5k
ZW50ICsgJy8+XHJcbicpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxm
Ll93cml0ZV90b19maWxlKHN1Yl9pbmRlbnQpCisgICAgICAgIHNlbGYuX3dyaXRlX3RvX2ZpbGUo
Jz5cclxuJykKKyAgICAgICAgaWYgZWxlbWVudC5jaGlsZHJlbjoKKyAgICAgICAgICAgIGlmIFZD
UHJvamVjdFdyaXRlci5fc2hvdWxkX3NvcnRfY2hpbGRyZW4oZWxlbWVudC5uYW1lKToKKyAgICAg
ICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuLnNvcnQoa2V5PVZDUHJvamVjdFdyaXRlci5fZWxl
bWVudF9zb3J0aW5nX2tleSkKKyAgICAgICAgICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxk
cmVuOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlRWxlbWVudChjaGlsZCwgc3ViX2luZGVu
dCkKKyAgICAgICAgc2VsZi5fd3JpdGVfdG9fZmlsZShpbmRlbnQgKyAnPC8nICsgZWxlbWVudC5u
YW1lICsgJz5cclxuJykKKworICAgIGRlZiB3cml0ZV9wcm9qZWN0X2ZpbGUoc2VsZiwgZmlsZV9w
YXRoKToKKyAgICAgICAgc2VsZi5fZmlsZSA9IHNlbGYuZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV9m
aWxlX2Zvcl93cml0aW5nKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5fd3JpdGVfdG9fZmlsZShz
ZWxmLnByb2plY3QueG1sX2xpbmUgKyAnXHJcbicpCisgICAgICAgIHNlbGYuX3dyaXRlRWxlbWVu
dChzZWxmLnByb2plY3QudmlzdWFsX3N0dWRpb19wcm9qZWN0LCAnJykKKyAgICAgICAgc2VsZi5f
ZmlsZS5jbG9zZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>