// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/lib/htmshell.c
// Function: getCspPolicyString
char *getCspPolicyString()
/* get the policy string */
{
// example "default-src 'self'; child-src 'none'; object-src 'none'"
struct dyString *policy = dyStringNew(1024);
dyStringAppend(policy, "default-src *;");

/* more secure method not used yet 
dyStringAppend(policy, "default-src 'self';");

dyStringAppend(policy, "  child-src 'self';");
*/

dyStringAppend(policy, " script-src 'self' blob:");
// Trick for backwards compatibility with browsers that understand CSP1 but not nonces (CSP2).
dyStringAppend(policy, " 'unsafe-inline'");
// For browsers that DO understand nonces and CSP2, they ignore 'unsafe-inline' in script if nonce is present.
char *noncePolicy=getNoncePolicy();
dyStringPrintf(policy, " %s", noncePolicy);
freeMem(noncePolicy);
dyStringAppend(policy, " code.jquery.com");          // used by hgIntegrator jsHelper and others
dyStringAppend(policy, " www.google-analytics.com"); // used by google analytics
// cirm cdw lib and web browse
dyStringAppend(policy, " www.samsarin.com/project/dagre-d3/latest/dagre-d3.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/bowser/1.6.1/bowser.min.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js");
dyStringAppend(policy, " login.persona.org/include.js");
dyStringAppend(policy, " cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js");
// expMatrix
dyStringAppend(policy, " ajax.googleapis.com");
dyStringAppend(policy, " maxcdn.bootstrapcdn.com");
dyStringAppend(policy, " d3js.org/d3.v3.min.js");
// jsHelper
dyStringAppend(policy, " cdn.datatables.net");

dyStringAppend(policy, ";");


dyStringAppend(policy, " style-src * 'unsafe-inline';");

/* more secure method not used yet 
dyStringAppend(policy, " style-src 'self' 'unsafe-inline'");
dyStringAppend(policy, " code.jquery.com");          // used by hgIntegrator
dyStringAppend(policy, " netdna.bootstrapcdn.com");  // used by hgIntegrator
dyStringAppend(policy, " fonts.googleapis.com");    // used by hgGateway
dyStringAppend(policy, " maxcdn.bootstrapcdn.com"); // used by hgGateway
dyStringAppend(policy, ";");
*/

// The data: protocol is used by popular browser extensions.
// It seems to be safe and it is too bad that it must be explicitly included.
dyStringAppend(policy, " font-src * data:;");

/* more secure method not used yet 
dyStringAppend(policy, " font-src 'self'");
dyStringAppend(policy, " netdna.bootstrapcdn.com");  // used by hgIntegrator
dyStringAppend(policy, " maxcdn.bootstrapcdn.com"); // used by hgGateway
dyStringAppend(policy, " fonts.gstatic.com");       // used by hgGateway
dyStringAppend(policy, ";");

dyStringAppend(policy, " object-src 'none';");

*/

dyStringAppend(policy, " img-src * data:;");  

/* more secure method not used yet 
dyStringAppend(policy, " img-src 'self'");
// used by hgGene for modbaseimages in hg/hgc/lowelab.c hg/protein/lib/domains.c hg/hgGene/domains.c
dyStringAppend(policy, " modbase.compbio.ucsf.edu");  
dyStringAppend(policy, " hgwdev.gi.ucsc.edu"); // used by visiGene
dyStringAppend(policy, " genome.ucsc.edu"); // used by visiGene
dyStringAppend(policy, " code.jquery.com");          // used by hgIntegrator
dyStringAppend(policy, " www.google-analytics.com"); // used by google analytics
dyStringAppend(policy, " stats.g.doubleclick.net"); // used by google analytics
dyStringAppend(policy, ";");
*/
return dyStringCannibalize(&policy);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x400, %edi            # imm = 0x400
callq 0x35020
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x771ab(%rip), %rsi     # 0xe0f6c
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x771aa(%rip), %rsi     # 0xe0f7b
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x771b3(%rip), %rsi     # 0xe0f94
callq 0x353b0
callq 0x69d50
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq 0x71088(%rip), %rsi     # 0xdae86
movb $0x0, %al
callq 0x35540
movq -0x10(%rbp), %rdi
callq 0x40d40
movq -0x8(%rbp), %rdi
leaq 0x7718c(%rip), %rsi     # 0xe0fa5
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x7718d(%rip), %rsi     # 0xe0fb6
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x77197(%rip), %rsi     # 0xe0fd0
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x771bd(%rip), %rsi     # 0xe1006
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x771e0(%rip), %rsi     # 0xe1039
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x7720c(%rip), %rsi     # 0xe1075
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x77237(%rip), %rsi     # 0xe10b0
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x77262(%rip), %rsi     # 0xe10eb
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x7728d(%rip), %rsi     # 0xe1126
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x7729b(%rip), %rsi     # 0xe1144
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772ce(%rip), %rsi     # 0xe1187
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772d3(%rip), %rsi     # 0xe119c
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772dc(%rip), %rsi     # 0xe11b5
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772e3(%rip), %rsi     # 0xe11cc
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x75eb8(%rip), %rsi     # 0xdfdb1
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772d7(%rip), %rsi     # 0xe11e0
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772e5(%rip), %rsi     # 0xe11fe
callq 0x353b0
movq -0x8(%rbp), %rdi
leaq 0x772e8(%rip), %rsi     # 0xe1211
callq 0x353b0
leaq -0x8(%rbp), %rdi
callq 0x350c0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)