const ( // ECDSA Elliptic Curve Digital Signature Algorithm (key gen, import, sign, verify), // at default security level. // Each BCCSP may or may not support default security level. If not supported than // an error will be returned. ECDSA = "ECDSA" // ECDSA Elliptic Curve Digital Signature Algorithm over P-256 curve ECDSAP256 = "ECDSAP256" // ECDSA Elliptic Curve Digital Signature Algorithm over P-384 curve ECDSAP384 = "ECDSAP384" // ECDSAReRand ECDSA key re-randomization ECDSAReRand = "ECDSA_RERAND" // RSA at the default security level. // Each BCCSP may or may not support default security level. If not supported than // an error will be returned. RSA = "RSA" // RSA at 1024 bit security level. RSA1024 = "RSA1024" // RSA at 2048 bit security level. RSA2048 = "RSA2048" // RSA at 3072 bit security level. RSA3072 = "RSA3072" // RSA at 4096 bit security level. RSA4096 = "RSA4096" // AES Advanced Encryption Standard at the default security level. // Each BCCSP may or may not support default security level. If not supported than // an error will be returned. AES = "AES" // AES Advanced Encryption Standard at 128 bit security level AES128 = "AES128" // AES Advanced Encryption Standard at 192 bit security level AES192 = "AES192" // AES Advanced Encryption Standard at 256 bit security level AES256 = "AES256" // HMAC keyed-hash message authentication code HMAC = "HMAC" // HMACTruncated256 HMAC truncated at 256 bits. HMACTruncated256 = "HMAC_TRUNCATED_256" // SHA Secure Hash Algorithm using default family. // Each BCCSP may or may not support default security level. If not supported than // an error will be returned. SHA = "SHA" // SHA2 is an identifier for SHA2 hash family SHA2 = "SHA2" // SHA3 is an identifier for SHA3 hash family SHA3 = "SHA3" // SHA256 SHA256 = "SHA256" // SHA384 SHA384 = "SHA384" // SHA3_256 SHA3_256 = "SHA3_256" // SHA3_384 SHA3_384 = "SHA3_384" // X509Certificate Label for X509 certificate related operation X509Certificate = "X509Certificate" )
const ( // IDEMIX constant to identify Idemix related algorithms IDEMIX = "IDEMIX" )
AES128KeyGenOpts contains options for AES key generation at 128 security level
type AES128KeyGenOpts struct { Temporary bool }
func (opts *AES128KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *AES128KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
AES192KeyGenOpts contains options for AES key generation at 192 security level
type AES192KeyGenOpts struct { Temporary bool }
func (opts *AES192KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *AES192KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
AES256ImportKeyOpts contains options for importing AES 256 keys.
type AES256ImportKeyOpts struct { Temporary bool }
func (opts *AES256ImportKeyOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *AES256ImportKeyOpts) Ephemeral() bool
Ephemeral returns true if the key generated has to be ephemeral, false otherwise.
AES256KeyGenOpts contains options for AES key generation at 256 security level
type AES256KeyGenOpts struct { Temporary bool }
func (opts *AES256KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *AES256KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
AESCBCPKCS7ModeOpts contains options for AES encryption in CBC mode with PKCS7 padding. Notice that both IV and PRNG can be nil. In that case, the BCCSP implementation is supposed to sample the IV using a cryptographic secure PRNG. Notice also that either IV or PRNG can be different from nil.
type AESCBCPKCS7ModeOpts struct { // IV is the initialization vector to be used by the underlying cipher. // The length of IV must be the same as the Block's block size. // It is used only if different from nil. IV []byte // PRNG is an instance of a PRNG to be used by the underlying cipher. // It is used only if different from nil. PRNG io.Reader }
AESKeyGenOpts contains options for AES key generation at default security level
type AESKeyGenOpts struct { Temporary bool }
func (opts *AESKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *AESKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
BCCSP is the blockchain cryptographic service provider that offers the implementation of cryptographic standards and algorithms.
type BCCSP interface { // KeyGen generates a key using opts. KeyGen(opts KeyGenOpts) (k Key, err error) // KeyDeriv derives a key from k using opts. // The opts argument should be appropriate for the primitive used. KeyDeriv(k Key, opts KeyDerivOpts) (dk Key, err error) // KeyImport imports a key from its raw representation using opts. // The opts argument should be appropriate for the primitive used. KeyImport(raw interface{}, opts KeyImportOpts) (k Key, err error) // GetKey returns the key this CSP associates to // the Subject Key Identifier ski. GetKey(ski []byte) (k Key, err error) // Hash hashes messages msg using options opts. // If opts is nil, the default hash function will be used. Hash(msg []byte, opts HashOpts) (hash []byte, err error) // GetHash returns and instance of hash.Hash using options opts. // If opts is nil, the default hash function will be returned. GetHash(opts HashOpts) (h hash.Hash, err error) // Sign signs digest using key k. // The opts argument should be appropriate for the algorithm used. // // Note that when a signature of a hash of a larger message is needed, // the caller is responsible for hashing the larger message and passing // the hash (as digest). Sign(k Key, digest []byte, opts SignerOpts) (signature []byte, err error) // Verify verifies signature against key k and digest // The opts argument should be appropriate for the algorithm used. Verify(k Key, signature, digest []byte, opts SignerOpts) (valid bool, err error) // Encrypt encrypts plaintext using key k. // The opts argument should be appropriate for the algorithm used. Encrypt(k Key, plaintext []byte, opts EncrypterOpts) (ciphertext []byte, err error) // Decrypt decrypts ciphertext using key k. // The opts argument should be appropriate for the algorithm used. Decrypt(k Key, ciphertext []byte, opts DecrypterOpts) (plaintext []byte, err error) }
DecrypterOpts contains options for decrypting with a CSP.
type DecrypterOpts interface{}
ECDSAGoPublicKeyImportOpts contains options for ECDSA key importation from ecdsa.PublicKey
type ECDSAGoPublicKeyImportOpts struct { Temporary bool }
func (opts *ECDSAGoPublicKeyImportOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *ECDSAGoPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAKeyGenOpts contains options for ECDSA key generation.
type ECDSAKeyGenOpts struct { Temporary bool }
func (opts *ECDSAKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *ECDSAKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAP256KeyGenOpts contains options for ECDSA key generation with curve P-256.
type ECDSAP256KeyGenOpts struct { Temporary bool }
func (opts *ECDSAP256KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *ECDSAP256KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAP384KeyGenOpts contains options for ECDSA key generation with curve P-384.
type ECDSAP384KeyGenOpts struct { Temporary bool }
func (opts *ECDSAP384KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *ECDSAP384KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAPKIXPublicKeyImportOpts contains options for ECDSA public key importation in PKIX format
type ECDSAPKIXPublicKeyImportOpts struct { Temporary bool }
func (opts *ECDSAPKIXPublicKeyImportOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *ECDSAPKIXPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAPrivateKeyImportOpts contains options for ECDSA secret key importation in DER format or PKCS#8 format.
type ECDSAPrivateKeyImportOpts struct { Temporary bool }
func (opts *ECDSAPrivateKeyImportOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *ECDSAPrivateKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAReRandKeyOpts contains options for ECDSA key re-randomization.
type ECDSAReRandKeyOpts struct { Temporary bool Expansion []byte }
func (opts *ECDSAReRandKeyOpts) Algorithm() string
Algorithm returns the key derivation algorithm identifier (to be used).
func (opts *ECDSAReRandKeyOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
func (opts *ECDSAReRandKeyOpts) ExpansionValue() []byte
ExpansionValue returns the re-randomization factor
EncrypterOpts contains options for encrypting with a CSP.
type EncrypterOpts interface{}
HMACDeriveKeyOpts contains options for HMAC key derivation.
type HMACDeriveKeyOpts struct { Temporary bool Arg []byte }
func (opts *HMACDeriveKeyOpts) Algorithm() string
Algorithm returns the key derivation algorithm identifier (to be used).
func (opts *HMACDeriveKeyOpts) Argument() []byte
Argument returns the argument to be passed to the HMAC
func (opts *HMACDeriveKeyOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
HMACImportKeyOpts contains options for importing HMAC keys.
type HMACImportKeyOpts struct { Temporary bool }
func (opts *HMACImportKeyOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *HMACImportKeyOpts) Ephemeral() bool
Ephemeral returns true if the key generated has to be ephemeral, false otherwise.
HMACTruncated256AESDeriveKeyOpts contains options for HMAC truncated at 256 bits key derivation.
type HMACTruncated256AESDeriveKeyOpts struct { Temporary bool Arg []byte }
func (opts *HMACTruncated256AESDeriveKeyOpts) Algorithm() string
Algorithm returns the key derivation algorithm identifier (to be used).
func (opts *HMACTruncated256AESDeriveKeyOpts) Argument() []byte
Argument returns the argument to be passed to the HMAC
func (opts *HMACTruncated256AESDeriveKeyOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
HashOpts contains options for hashing with a CSP.
type HashOpts interface { // Algorithm returns the hash algorithm identifier (to be used). Algorithm() string }
func GetHashOpt(hashFunction string) (HashOpts, error)
GetHashOpt returns the HashOpts corresponding to the passed hash function
type IdemixAttribute struct { // Type is the attribute's type Type IdemixAttributeType // Value is the attribute's value Value interface{} }
IdemixAttributeType represents the type of an idemix attribute
type IdemixAttributeType int
const ( // IdemixHiddenAttribute represents an hidden attribute IdemixHiddenAttribute IdemixAttributeType = iota // IdemixStringAttribute represents a sequence of bytes IdemixBytesAttribute // IdemixIntAttribute represents an int IdemixIntAttribute )
IdemixCRISignerOpts contains the options to generate an Idemix CRI. The CRI is supposed to be generated by the Issuing authority and can be verified publicly by using the revocation public key.
type IdemixCRISignerOpts struct { Epoch int RevocationAlgorithm RevocationAlgorithm UnrevokedHandles [][]byte // H is the hash function to be used H crypto.Hash }
func (o *IdemixCRISignerOpts) HashFunc() crypto.Hash
IdemixCredentialRequestSignerOpts contains the option to create a Idemix credential request.
type IdemixCredentialRequestSignerOpts struct { // Attributes contains a list of indices of the attributes to be included in the // credential. The indices are with the respect to IdemixIssuerKeyGenOpts#AttributeNames. Attributes []int // IssuerPK is the public-key of the issuer IssuerPK Key // IssuerNonce is generated by the issuer and used by the client to generate the credential request. // Once the issuer gets the credential requests, it checks that the nonce is the same. IssuerNonce []byte // HashFun is the hash function to be used H crypto.Hash }
func (o *IdemixCredentialRequestSignerOpts) HashFunc() crypto.Hash
func (o *IdemixCredentialRequestSignerOpts) IssuerPublicKey() Key
IssuerPublicKey returns the issuer public key used to derive a new unlinkable pseudonym from a credential secret key
IdemixCredentialSignerOpts contains the options to produce a credential starting from a credential request
type IdemixCredentialSignerOpts struct { // Attributes to include in the credentials. IdemixHiddenAttribute is not allowed here Attributes []IdemixAttribute // IssuerPK is the public-key of the issuer IssuerPK Key // HashFun is the hash function to be used H crypto.Hash }
func (o *IdemixCredentialSignerOpts) HashFunc() crypto.Hash
HashFunc returns an identifier for the hash function used to produce the message passed to Signer.Sign, or else zero to indicate that no hashing was done.
func (o *IdemixCredentialSignerOpts) IssuerPublicKey() Key
type IdemixIIssuerPublicKeyImporterErrorType int
const ( IdemixIssuerPublicKeyImporterUnmarshallingError IdemixIIssuerPublicKeyImporterErrorType = iota IdemixIssuerPublicKeyImporterHashError IdemixIssuerPublicKeyImporterValidationError IdemixIssuerPublicKeyImporterNumAttributesError IdemixIssuerPublicKeyImporterAttributeNameError )
IdemixIssuerKeyGenOpts contains the options for the Idemix Issuer key-generation. A list of attribytes may be optionally passed
type IdemixIssuerKeyGenOpts struct { // Temporary tells if the key is ephemeral Temporary bool // AttributeNames is a list of attributes AttributeNames []string }
func (*IdemixIssuerKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixIssuerKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
IdemixIssuerPublicKeyImportOpts contains the options for importing of an Idemix issuer public key.
type IdemixIssuerPublicKeyImportOpts struct { Temporary bool // AttributeNames is a list of attributes to ensure the import public key has AttributeNames []string }
func (*IdemixIssuerPublicKeyImportOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixIssuerPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
type IdemixIssuerPublicKeyImporterError struct { Type IdemixIIssuerPublicKeyImporterErrorType ErrorMsg string Cause error }
func (r *IdemixIssuerPublicKeyImporterError) Error() string
IdemixNymKeyDerivationOpts contains the options to create a new unlinkable pseudonym from a credential secret key with the respect to the specified issuer public key
type IdemixNymKeyDerivationOpts struct { // Temporary tells if the key is ephemeral Temporary bool // IssuerPK is the public-key of the issuer IssuerPK Key }
func (*IdemixNymKeyDerivationOpts) Algorithm() string
Algorithm returns the key derivation algorithm identifier (to be used).
func (o *IdemixNymKeyDerivationOpts) Ephemeral() bool
Ephemeral returns true if the key to derive has to be ephemeral, false otherwise.
func (o *IdemixNymKeyDerivationOpts) IssuerPublicKey() Key
IssuerPublicKey returns the issuer public key used to derive a new unlinkable pseudonym from a credential secret key
IdemixNymPublicKeyImportOpts contains the options to import the public part of a pseudonym
type IdemixNymPublicKeyImportOpts struct { // Temporary tells if the key is ephemeral Temporary bool }
func (*IdemixNymPublicKeyImportOpts) Algorithm() string
Algorithm returns the key derivation algorithm identifier (to be used).
func (o *IdemixNymPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to derive has to be ephemeral, false otherwise.
IdemixNymSignerOpts contains the options to generate an idemix pseudonym signature.
type IdemixNymSignerOpts struct { // Nym is the pseudonym to be used Nym Key // IssuerPK is the public-key of the issuer IssuerPK Key // H is the hash function to be used H crypto.Hash }
func (o *IdemixNymSignerOpts) HashFunc() crypto.Hash
HashFunc returns an identifier for the hash function used to produce the message passed to Signer.Sign, or else zero to indicate that no hashing was done.
IdemixRevocationKeyGenOpts contains the options for the Idemix revocation key-generation.
type IdemixRevocationKeyGenOpts struct { // Temporary tells if the key is ephemeral Temporary bool }
func (*IdemixRevocationKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixRevocationKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
IdemixRevocationPublicKeyImportOpts contains the options for importing of an Idemix revocation public key.
type IdemixRevocationPublicKeyImportOpts struct { Temporary bool }
func (*IdemixRevocationPublicKeyImportOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixRevocationPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
IdemixSignerOpts contains the options to generate an Idemix signature
type IdemixSignerOpts struct { // Nym is the pseudonym to be used Nym Key // IssuerPK is the public-key of the issuer IssuerPK Key // Credential is the byte representation of the credential signed by the issuer Credential []byte // Attributes specifies which attribute should be disclosed and which not. // If Attributes[i].Type = IdemixHiddenAttribute // then the i-th credential attribute should not be disclosed, otherwise the i-th // credential attribute will be disclosed. // At verification time, if the i-th attribute is disclosed (Attributes[i].Type != IdemixHiddenAttribute), // then Attributes[i].Value must be set accordingly. Attributes []IdemixAttribute // RhIndex is the index of attribute containing the revocation handler. // Notice that this attributed cannot be discloused RhIndex int // CRI contains the credential revocation information CRI []byte // Epoch is the revocation epoch the signature should be produced against Epoch int // RevocationPublicKey is the revocation public key RevocationPublicKey Key // H is the hash function to be used H crypto.Hash }
func (o *IdemixSignerOpts) HashFunc() crypto.Hash
IdemixUserSecretKeyGenOpts contains the options for the generation of an Idemix credential secret key.
type IdemixUserSecretKeyGenOpts struct { Temporary bool }
func (*IdemixUserSecretKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixUserSecretKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
IdemixUserSecretKeyImportOpts contains the options for importing of an Idemix credential secret key.
type IdemixUserSecretKeyImportOpts struct { Temporary bool }
func (*IdemixUserSecretKeyImportOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (o *IdemixUserSecretKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
Key represents a cryptographic key
type Key interface { // Bytes converts this key to its byte representation, // if this operation is allowed. Bytes() ([]byte, error) // SKI returns the subject key identifier of this key. SKI() []byte // Symmetric returns true if this key is a symmetric key, // false is this key is asymmetric Symmetric() bool // Private returns true if this key is a private key, // false otherwise. Private() bool // PublicKey returns the corresponding public key part of an asymmetric public/private key pair. // This method returns an error in symmetric key schemes. PublicKey() (Key, error) }
KeyDerivOpts contains options for key-derivation with a CSP.
type KeyDerivOpts interface { // Algorithm returns the key derivation algorithm identifier (to be used). Algorithm() string // Ephemeral returns true if the key to derived has to be ephemeral, // false otherwise. Ephemeral() bool }
KeyGenOpts contains options for key-generation with a CSP.
type KeyGenOpts interface { // Algorithm returns the key generation algorithm identifier (to be used). Algorithm() string // Ephemeral returns true if the key to generate has to be ephemeral, // false otherwise. Ephemeral() bool }
KeyImportOpts contains options for importing the raw material of a key with a CSP.
type KeyImportOpts interface { // Algorithm returns the key importation algorithm identifier (to be used). Algorithm() string // Ephemeral returns true if the key generated has to be ephemeral, // false otherwise. Ephemeral() bool }
KeyStore represents a storage system for cryptographic keys. It allows to store and retrieve bccsp.Key objects. The KeyStore can be read only, in that case StoreKey will return an error.
type KeyStore interface { // ReadOnly returns true if this KeyStore is read only, false otherwise. // If ReadOnly is true then StoreKey will fail. ReadOnly() bool // GetKey returns a key object whose SKI is the one passed. GetKey(ski []byte) (k Key, err error) // StoreKey stores the key k in this KeyStore. // If this KeyStore is read only then the method will fail. StoreKey(k Key) (err error) }
RSA1024KeyGenOpts contains options for RSA key generation at 1024 security.
type RSA1024KeyGenOpts struct { Temporary bool }
func (opts *RSA1024KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *RSA1024KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
RSA2048KeyGenOpts contains options for RSA key generation at 2048 security.
type RSA2048KeyGenOpts struct { Temporary bool }
func (opts *RSA2048KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *RSA2048KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
RSA3072KeyGenOpts contains options for RSA key generation at 3072 security.
type RSA3072KeyGenOpts struct { Temporary bool }
func (opts *RSA3072KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *RSA3072KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
RSA4096KeyGenOpts contains options for RSA key generation at 4096 security.
type RSA4096KeyGenOpts struct { Temporary bool }
func (opts *RSA4096KeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *RSA4096KeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
ECDSAGoPublicKeyImportOpts contains options for RSA key importation from rsa.PublicKey
type RSAGoPublicKeyImportOpts struct { Temporary bool }
func (opts *RSAGoPublicKeyImportOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *RSAGoPublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
RSAKeyGenOpts contains options for RSA key generation.
type RSAKeyGenOpts struct { Temporary bool }
func (opts *RSAKeyGenOpts) Algorithm() string
Algorithm returns the key generation algorithm identifier (to be used).
func (opts *RSAKeyGenOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.
RevocationAlgorithm identifies the revocation algorithm
type RevocationAlgorithm int32
const ( // AlgNoRevocation means no revocation support AlgNoRevocation RevocationAlgorithm = iota )
SHA256Opts contains options relating to SHA-256.
type SHA256Opts struct { }
func (opts *SHA256Opts) Algorithm() string
Algorithm returns the hash algorithm identifier (to be used).
SHA384Opts contains options relating to SHA-384.
type SHA384Opts struct { }
func (opts *SHA384Opts) Algorithm() string
Algorithm returns the hash algorithm identifier (to be used).
SHA3_256Opts contains options relating to SHA3-256.
type SHA3_256Opts struct { }
func (opts *SHA3_256Opts) Algorithm() string
Algorithm returns the hash algorithm identifier (to be used).
SHA3_384Opts contains options relating to SHA3-384.
type SHA3_384Opts struct { }
func (opts *SHA3_384Opts) Algorithm() string
Algorithm returns the hash algorithm identifier (to be used).
SHAOpts contains options for computing SHA.
type SHAOpts struct { }
func (opts *SHAOpts) Algorithm() string
Algorithm returns the hash algorithm identifier (to be used).
SignerOpts contains options for signing with a CSP.
type SignerOpts interface { crypto.SignerOpts }
X509PublicKeyImportOpts contains options for importing public keys from an x509 certificate
type X509PublicKeyImportOpts struct { Temporary bool }
func (opts *X509PublicKeyImportOpts) Algorithm() string
Algorithm returns the key importation algorithm identifier (to be used).
func (opts *X509PublicKeyImportOpts) Ephemeral() bool
Ephemeral returns true if the key to generate has to be ephemeral, false otherwise.


The {{$ctrl.organization.name}} organization does not have any teams yet.
You can use teams to organize users and make sharing common data even easier.
When you form teams, they'll be shown here.
Unable to find any teams matching "{{$ctrl.search}}".
Please refresh the page and try again.
If the problem persists, please contact {{$ctrl.BUILDCONFIG.APP_NAME}} support.


Venus, Earth, Mars and Potentially Hazardous Asteroids (PHA)*
Slider control adjusts the simulation speed.
- Right-button click and drag to zoom in and out
- Left-button click and drag to rotate model
- Middle-button click and drag to move model
fieldOfView:
{{ fieldOfView }}
pos-x:
pos-y:
pos-z:
{{ pos_str }}
ori-x:
ori-y:
ori-z:
ori-delta:
{{ ori_str }}
*Objects are not to scale
Sources of data and equations applied in the model:
- Orbital elements
- Orbital periods
- Potentially Hazardous Asteroids
- Orbital Mechanics: Theory and Applications


Project Overview
I optimized Bulk segregant RNA-sequencing (BSR-seq) technology and applied it to study enteric septicemia of catfish, one of the most common and serious diseases afflicting catfish. This study demonstrated the utility and effectiveness of this novel technique and identified the candidate genomic region relevant to this disease. We also performed a series of genomic and bioinformatics analyses of the data obtained using BSR-seq, making a range of crucial discoveries concerning catfish innate immunity and resistance against bacterial infections.
Representative publication
- Ruijia Wang, Luyang Sun, Lisui Bao, Jiaren Zhang, Yanliang Jiang, Jun Yao, Lin Song, Jianbin Feng, Shikai Liu, Zhanjiang Liu: Bulk segregant RNA-seq reveals expression and positional candidate genes and allele-specific expression for disease resistance against enteric septicemia of catfish. BMC Genomics (2013); 14(1):929. Paper link
- Ruijia Wang, Yu Zhang, Shikai Liu, Chao Li, Luyang Sun, Lisui Bao, Jianbin Feng, Zhanjiang Liu: Analysis of 52 Rab GTPases from channel catfish and their involvement in immune responses after bacterial infections. Developmental and comparative immunology 45.1 (2014): 21-34. Paper link
- Ruijia Wang, Jianbin Feng, Chao Li, Shikai Liu, Yu Zhang, Zhanjiang Liu: Four lysozymes (one c-type and three g-type) in catfish are drastically but differentially induced after bacterial infection. Fish & Shellfish Immunology (2013); 35(1). Paper link
Gallery
Figure. Genomic resource of Sea Cucumber.
(A) Genes harbouring significant SNPs, plotted by their combined allele ratios versus the rank of RPKM. Red dots stand for genes
with the preferentially expressed allele expressed higher in resistant group and their parental origin unknown; Solid red triangles stand for genes
with the preferentially expressed allele expressed higher in resistant group and their parental origin being channel catfish; Unfilled red triangles
stand for genes with the preferentially expressed allele expressed higher in susceptible group and their parental origin being channel catfish;
Solid blue triangles stand for genes with the preferentially expressed allele expressed higher in resistant group and their parental origin being
blue catfish; Unfilled blue triangles stand for genes with the preferentially expressed allele expressed higher in susceptible group and their
parental origin being blue catfish; and green dots stand for genes with the preferentially expressed allele expressed higher in susceptible group
and their parental origin unknown.
(B) Schematic representation of the results from syntenic analysis of c-type lysozyme genes from various fish with species names and their chromosomes or scaffolds indicated
on the left margin. Gene names are color-coded and are self-explanatory.
(C) Distribution of genes containing SNPs of high BFR in linkage group 15.
(D) Quantitative real-time RT-PCR analysis for the expression of the catfish c-type lysozyme.
Author: Ruijia Wang


The little CPU that could ...
This is a web-frontend to a P150 emulator. The P150 machine supports:
The CPU supports two modes of operation: step-by-step, and program execute.
Begin by loading your program into the memory cells on the right side of the screen.
(The CPU will always begin execution at address 0x00
.)
The CPU server will only run up to 10,000 instructions.
The CPU will be forcibly halted at this point; and the current
state of the CPU at the last executed instruction will be returned.
Undo can only rewind one operation.
Your CPU state is snapshotted when you click Run or Tick.


Project Atomic:
Deploy and Manage Your Containers
in the Next Generation Container OS
Use immutable infrastructure to deploy and scale your containerized applications. Project Atomic mainly comprises Atomic Host, Atomic Workstation, and various container tooling.


Learning Objectives
My learning objective at EDA is to build up the necessary programming skills to produce a high quality portfolio of web applications. I will be able to draw on past experience working in an agile/SCRUM team environment which will allow me to focus on utilising technologies and frameworks that support web development. To accomplish this I will need to have a working knowledge of both frontend(client) and backend(server) JavaScript. This will allow me to navigate the MEAN stack to build JS applications. This will be a good base from which to explore more learning and look to secure a role as a fulltime JS developer.
Commitment
I am fully committed to completing this course to the best of my ability. I will work hard to deepen my understandings of both the technical and soft skills required to support mine and my class mates development through this learning process. I will endeavour to be an approachable and active member of the class and when working in team environments I will be conscientious of others and their commitments. I will treat class mates with respect - irrespective of race, age or gender. I commit to managing my workload by being true to my learning outcomes and maintaining a healthy code-life balance.
Strengths and Weaknesses
Looking at results I received in strength surveys and talking to friends, colleagues and family. I believe my strengths lie in my ability to deliver. This is evidenced by my former role being tasked to manage small teams and materials over multiple construction projects and also my past achievement of a Computer Science degree. The latter also benefited from my strengths of self-belief and attitude of lifelong learning. Also empathy is a tricky one because it slows me down but is also largely why I believe my Myers-Briggs is significantly different from the last time I did it. I'm prone to being cynical for the sake of argument as I do think its valuable to call things as they are. That said the more I follow my gut and stop overthinking the easier I've found it to the find the positives in most situations. I'm definitely still Tyrion and not Jon though.. He knows nothing.
Deliverer Polymath Self-belief Empathy Winner - ENFJ (Protagonist)
Limitations
Previous experience with PHP/LAMP stack and only worked on fairly simple static websites since graduation in 2013
Challenges and Expectations
Currently I've been doing around 5 hours a day but I would like to schedule this closer to the weekday hours of bootcamp. This routine has already been stretched with scheduling challenges of my sport team commitments. Training Monday and Wednesday evening and games Saturdays - these will take a backseat when bootcamp starts.
I expect the facilitators to be clear and honest with me throughout foundations and bootcamp. I will benefit from feedback and can take criticism.


Kaia-services.js library not detected
Not connected to Kaia.ai server
Instructions:
(1) launch Remote Console on desktop
(2) type 2+2
(3) click Send button
(4) type
$('#mydiv').html('Hello')
(5) click Send


Glossary - Bibliography - Appendices - Help
Part
1 - INTRODUCTION |
Part 4 -
INTERFACE SPECIFICATIONS Interface Description IDL Definitions Notes on the Interface Specifications |
| Part 2 -
TEXTUAL REQUIREMENTS Setting the Scene Architecture CO Objects Present in a Compliant Simulator Background on SMST SMST Specific Requirements Desirable Characteristics for the CO Interface |
Part 5 -
TUTORIALS Introduction Flowsheet Server 5.0 Set of Client Programs Flowsheet Analyser 1.0 |
| Part 3 -
ANALYSIS & DESIGN Introduction UML Model |


 HTML is the different rooms of the house and what it contains and CSS is the different style in each room, eg: the color of the walls can change from one room to the other as well as the color or type of furniture.
Explain control flow and loops using an example process from everyday life, for example 'waking up' or 'brushing your teeth'. (But not those ones).
Loops are an example of control flow (which can be described as the order in which the computer executes statements in a script). An example of everyday life loop could be having a meal, you eat during your meal and until you are satisfied and full or not hungry anymore.
Describe what the DOM is and an example of how you might interact with it
The DOM is the data representation of the objects that comprise the structure and content of a document on the web. It is composed of nodes (everything that makes up the DOM) and these nodes are organised in a tree structure called the DOM tree. In brief the DOM is composed of branches of nodes and follows this hierarchy: The nodes contains nodes and these nodes contains nodes. In the DOM, nodes have an equivalent Javascript representation, eg: HTML tag
will be HTMLBRElement when manipulating the DOM.
It is important to share also that the DOM allows Javascript to see the objects it needs to modify. And for the modifications to happen APIs too are needed otherwise one piece of data cannot communicate to the other and thus, Javascript alone wont do much.
In saying so, here are some examples of how we might interact with the DOM:
(i) We can access (identify, locate) HTML and CSS elements in JavaScript.
Example:
(ii) We can modify these elements.
Example: with Events and Event handlers(Event listeners):
(iii) We can also create new elements dynamically and add them to the DOM.
Explain the difference between accessing data from arrays and objects.
Lets firstly review what are objects and arrays in JavaScript.
Both objects and arrays are considered “special” in JavaScript. Both of them represent a special data type that is mutable and can be used to store a collection of data (rather than just a single value). Their main difference lays in the ways they are used.
Objects are used when there is a need to represent an element that is made up and can be defined by a set of characteristics. (Note: These characteristics are called properties are comprised of a key and a value.)
Arrays are used when we want/need to create and store a list of multiple items in a single variable. (Note :Array properties can also store values consisting of strings, numbers, booleans, objects, and even other arrays.)
Alright, but more seriously, this is how an array looks like.
The main difference between these two reside in how we can access data from them. Let’s see how we can access, add, and remove items/data in each case.In objects we can access/add/remove data by using either dot (.) or bracket notation [ ]. As seen here:
In arrays, to access the data it encapsulates, we need to use the zero-based indexing, where the first item in an array has an index of [0], the second item an index of [1], and so on.
Furthermore, can be added and removed from the beginning or end of an array using the following methods: push(), pop(), unshift(), and shift()
Explain what functions are and why they are useful
Functions (function objects) are pieces of code that performs a said task. And the task is executed when the very functions is invoked. In brief, each function declares what they do and also execute it once being called. Functions can be assigned to variables and every function returns a value (undefined by default). Functions stop executing when its line of code ends or when the execution flow finds the return key.
Functions are useful as we can reuse code. Once it is defined once, the code be reused as many times as needed. And it can also be used with different arguments to produce different results.


Expert WSL: soup-to-nuts
Spicy Peppers Rating System | 🚫 - Zero Peppers | Mild and Nutritious; Blandly Educational
Covered here:
- what WSL is, and how to install it
- astonishingly useful WSL tips!
- ugly network troubleshooting
- boring, specialized topics that target 1% of you. 99% of you will be totally bored, but the remaining 1% will weep for joy
Introduction: What is WSL, and how is it useful?
WSL, the Windows Subsystem for Linux, is a surprisingly easy-to-install, convenient way to run Linux on Windows.
I use WSL to:
- ssh
- test and develop shell scripts
- run curl, base64, openssl, and whatnot
- run seedy bash one-liners I found on the internet
- run Windows-incompatible tools - most notably, TUIs like
tig
don’t run in Windows - configure neovim plugins for 7-20 hours every week (this is a joke, don’t hurt me)
All of these things can be done without WSL, but it’s less effort to go with the flow and say, run ssh as nature intended. As a real example, every complex kubectl
script I’ve seen was written in bash. And sure, you can convert those scripts to PowerShell, or you can somehow run bash directly on Windows…but why? It’s easier in WSL.
WSL is also well-isolated, such that I have already installed, deleted, migrated, reinstalled, and re-reinstalled distros without issue. In other words, WSL doesn’t do spooky things to your host like 👻👻👻cygwin👻👻👻 does. Spoken in love, cygwin.
Installing: WSL itself
As of 2022, installing WSL2 is as simple as running (as Administrator) wsl --install
if you’re lucky. Read this if you’re not lucky: https://docs.microsoft.com/en-us/windows/wsl/install#install
You will need to Enable Virtualization in your BIOS if it isn’t already enabled. Good luck. Everyone’s BIOS is different. These instructions are good: https://bce.berkeley.edu/enabling-virtualization-in-your-pc-bios.html. Personally, my expert technique to access the BIOS menu is to reboot and use both hands to repeatedly tap Del
, F1
, F2
, F8
, F9
, F12
all together like a complex piano chord, as quickly as possible, while thinking happy thoughts.
Beware of older, outdated instructions for installing WSL1 and even WSL2. And in full disclosure, I’m writing this sentence in April 2022, and I’m sure my instructions will similarly fall out of date. In the future you’ll spend 45 minutes begging your Windows Store Personal GAN Shopping Assistant to install WSL, and it won’t, of course. Anyway good luck in the future.
Installing: a linux distro
Installing a specific distro happens through the Windows Store. I don’t know why, either. Maybe forcing die-hard CLI advocates to install their favorite GPL-licensed distro through the comically commercialized Windows Store is a kind of joke? Well, intentional or no, it’s hilarious.
If you don’t know which distro to install, pick the most recent version of Ubuntu. And if you think you want to argue with this deliberately simplistic advice, then you are definitely not the target audience for it. Go in peace.
I should also point out that you can use the CLI to install a limited selection of distros:
# list available distros - more are available through the Windows Store than here
wsl --list --online
# install kali-linux
wsl --install -d kali-linux
Surprisingly useful things
WSL can launch Windows programs and use them in pipelines. There are some great things you can do with this synergy:
# launch Windows Explorer here - three ways
cmd.exe /c start .
explorer.exe
powershell.exe -Command ii .
# works on links too
cmd.exe /c start https://google.com/search?q=expert+wsl+devsecfailureops
# pipe directly to the Windows clipboard
echo "hunter2" | base64 | clip.exe
You can also run WSL processes in your PowerShell pipeline, but I haven’t found many good uses for it. I guess I could do something like the following? Anyway, it’s possible.
# base64-encode whatever's on the clipboard, and put that back on the clipboard
Get-Clipboard | wsl base64 | Set-Clipboard
Accessing files
Windows can access the WSL distro’s filesystem, and the WSL distro can access Windows' filesystem.
From Windows:
- Files in WSL are accessible. By example, the full path for
\\wsl$\Ubuntu-20.04\home\p\.bashrc
is formed as such:\\wsl$\Ubuntu-20.04
accesses the root of the Ubuntu 20.04 filesystem/home/p/.bashrc
is the path within that filesystem- thus
\\wsl$\Ubuntu-20.04
+/home/p/.bashrc
->\\wsl$\Ubuntu-20.04\home\p\.bashrc
cd \\wsl$\Ubuntu-20.04
works in PowerShell, and even cmd.exe has limited support for UNC-style paths- Accessing
\\wsl$
from the Explorer address bar lets you lazily navigate around WSL with the mouse and other GUI affordances–*audible gasp* BUT I WOULD NEVER! I haven’t touched my mouse since 2018, I swear! And that was an accident!
From WSL:
- Files in Windows are accessible. By example, the full path for
/mnt/c/Users/p/Desktop/passwords.txt
is formed as such:/mnt/c
accesses the root of the C: (all Windows drives are mounted to/mnt/<driveletter>
)\Users\p\Desktop\passwords.txt
is the path from within C:- thus
/mnt/c
+\Users\p\Desktop\passwords.txt
->/mnt/c/Users/p/Desktop/passwords.txt
- Windows paths referenced from WSL are case-sensitive. This is easier to remember once you’ve been burned by it 3-4 times (or 300-400 maybe).
wsl.exe usage
Here are the specific things I’ve done with wsl.exe
:
# start default distro and launch shell
# also kicks the WSL subsystem into gear if WSL's not running, for whatever reason
wsl
# list - useful if you're playing around with multiple distros, or don't know what you're doing
# I should point out that you can simultaneously install multiple distros
wsl --list
# shutdown
wsl --shutdown
You can quickly invoke the WSL shell via wsl.exe. The details are explained by example below:
# both --exec and (any unrecognized parameter) run a command in the WSL distro
# everything after -- is delegated to the WSL distro
wsl --exec echo "I'm in unix! PowerShell version: $($PSVersionTable.PSVersion) <--evaluated in PowerShell in Windows"
wsl ls -al
wsl -- ls -al
# SUBTLE DIFFERENCE BELOW - PAY ATTENTION:
# these echo back WSL distro: Ubuntu-20.04
wsl echo "WSL distro: `${WSL_DISTRO_NAME}"
wsl -- echo "WSL distro: `${WSL_DISTRO_NAME}"
# this echoes back WSL Distro: ${WSL_DISTRO_NAME}
wsl --exec echo "WSL Distro: `${WSL_DISTRO_NAME}"
Seamless Text Editing: VS Code
VS Code (running in Windows) seamlessly edits files in WSL2, so long as you’ve installed either the Remote - WSL
extension, or the Remote Development
extension.
To painlessly launch VS Code from within the WSL filesystem, do the same as anywhere else:
# In WSL, this works the same for the end-user (you), but does very different things under the hood
code .
Seamless Terminal Experience: Windows Terminal
I launch the Ubuntu 20.04 shell in a new tab in Windows Terminal with CTRL
+ SHIFT
+ 2
. Windows Terminal is highly configurable, so your hotkeys may vary.
Small nitpick: there are occasional display bugs in Windows Terminal. I’ve noticed too–it’s not just you.
WSL: Turning it off and on again
There are two options here: the one you hope works, and the one you know works. WSL’s --shutdown
command is usually effective.
- The option you hope works:
wsl --shutdown
followed bywsl
- The option you know works, for certain: reboot Windows (sorry)
WSL uses RAM
- If you’re running WSL on a Windows OS with only 16GB of RAM, consider upgrading to 32GB. With 16GB, you’re likely using all your RAM and relying on swap. This will slow you down noticeably.  I’m just saying that once you start running containers or VMs on 16GB of RAM, you’re done. You’re done.
- WSL2 appears as
Vmmem
in Task Manager. Ubuntu 20.04 on my machine is currently using just under 2GB of RAM. - To check available RAM, look at Performance->Memory in Task Manager.
Boring and Necessary: Networking issues
Listen up! Networking in WSL is magic. And by magic I mean opaque, mysterious, fickle, and moody. I’ve done several things to fix networking issues:
- If DNS dies regularly in WSL, fix it permanently with this WSL-specific change: https://superuser.com/a/1533768
- Set MTU to 1400 - I would love to explain this further, but in short, I can’t. Good luck, and if you google your mysterious networking-related error message and some of the first results are for setting the ‘MTU’, then try it, certainly. The last time I saw this error, someone was trying to clone a git repo.
Boring and Necessary: Line endings
This is a really boring topic, but if you need it, you need it.
Git for Windows is probably checking out files with CRLF line endings (the specifics are here: https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings). For most of us, if you commit files in Windows, push to GitHub, and pull them down in WSL, the line endings are LF in WSL and CRLF in Windows, which is probably what you want. However, if you’re manipulating/accessing files across Linux and Windows boundaries, consider several solutions to tackling the line ending problem:
dos2unix
to manually convert a file from LF to CRLF, or CRLF to LF, from inside WSL- Manually load and change line endings in your text editor. E.g. in VS Code in the status bar, it will indicate either LF or CRLF. You can change this by clicking on the LF (or CRLF) indicator in the status bar, or from the Command Palette:
>Change End of Line Sequence
.
More permanent, team-friendly defaults:
- set
.gitattributes
in individual repos to always checkout some file types (e.g. shell scripts) as LF - set
.gitattributes
in specific repos to always checkout all files as LF
More permanent defaults for your git install (only affects you, not the team):
- via
git config --global core.autocrlf
- via
git config --global core.eol


aa.
bb..
One
Two
Three
Week Working
Sun....
Mon....
Thu
Wed
Thr
Fri
Sat
illegal node will be ignored
Fronzend Data Grid
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Fronzend Data Grid
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela, Bolivarian Republic of
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara


GRAVITY_ERRORCODE_COMM_CONNECT
GRAVITY_ERRORCODE_COMM_CONNECT
Could not connect to remote host.
You should never use the value of the constant, always use it be referencing its name.
| GravityClient | The GravityClient class can be used to send events, item and user information to the recommendation engine and get recommendations. |
| GravityClientConfig | |
| GravityEvent | Describes an event for the recommendation engine, for example a user viewed an item. |
| GravityException | The exception class used by the recommendation engine client in case of an error. |
| GravityFaultInfo | Describes the error occured during a request. |
| GravityItem | An item is something that can be recommended to users. |
| GravityItemRecommendation | Contains a list of recommended items. This class is here only to describe the result, the actual result will not be an instance of this class because of json deserialization. |
| GravityNameValue | A name and a value. This can be used to provide information about items, users and events. |
| GravityRecEngException | This class used to deserialize exceptions coming from the recommendation engine. |
| GravityRecommendationContext | Contains information for a recommendation request. |
| GravityUser | A user in the recommendation system. A user is an entity which generates event, and can get recommendations. |


WITNESS LIST General Investigating Committee May 1, 2003-8:00A TX. Health and Human Services Comm On: Cooke, Jason (TX. Health and Human Services Comm.) Masters, Michael (Community Health Colutions of America) Olivo, Raquel (Avance-Rio Grande Valley) Perez de Colon, Mercedes (Avance, Inc.) Registering, but not testifying: On: Aragon, Steve (TX. Health and Human Services Comm)


Impact Labs is a student-led organization. We're a team of quirky engineers, humble idealists, passionate designers and bright-eyed philosophers!


St Pancras International
Euston Road
London NW1 2AR
United Kingdom
+44 20 7841 3540
marriott.com
In day 1, you will visit .....
Bootstrap easily and efficiently scales your websites and applications with a single code base, from phones to tablets to desktops with CSS media queries.
Day 2
Best Western Hotel De Weha
205 Avenue de Choisy
75013 Paris
+33 1 45 86 06 06
bestwestern.fr
In day 2, you will visit .....
Bootstrap easily and efficiently scales your websites and applications with a single code base, from phones to tablets to desktops with CSS media queries.
Day 3
Hotel Pullman Paris Tour Eiffel
18 Avenue de Suffren
75015 Paris
France
+33 1 44 38 56 00
accorhotels.com
In day 3, you will visit .....
Bootstrap easily and efficiently scales your websites and applications with a single code base, from phones to tablets to desktops with CSS media queries.


NO PAIN NO GAIN
Nice-looking body and powerful organism are interconnected and we can help you with both.
1-800-235-658
Bulgaria, Mladost 1, bl.105
Our coaches have years of experience in various types of fitness and sports.
Our coaches have years of experience in various types of fitness and sports.
Our coaches have years of experience in various types of fitness and sports.
Fitness
Emily can teach you all peculiarities of fitness and aerobics in a group or individually.
Yoga
Our leading yoga coach, Samantha will help you reach full harmony with your body.
Bodybuilding
Austin is not only our most called-for coach, but also a winner of many championships.


Four men arrested by gardaí investigating recent attacks on sex workers
by NewstalkFour men have been arrested in connection with the investigation into recent robberies and assaults on sex workers.
Three addresses were searched yesterday as apart of the investigation.
The four men - aged between 18 and 37 years of age - are being held for questioning under Section 4 of the Criminal Justice Act 1984 at Garda stations in Dublin.
A fifth man was also arrested on foot of a bench warrant, and is now before the District Court.
In a statement, gardaí said: "An Garda Síochána is continuing to appeal to any sex worker who may have been subject to a similar attack to immediately report the incident. Anyone who comes forward will be treated confidentially with compassion and sensitivity.
"An Garda Síochána is also appealing to any person with information on these callous, targeted attacks to please contact Gardaí to assist in bringing these dangerous attackers to justice."
Anybody with information is being asked to contact the Garda Confidential Line on 1800-666-111 or any Garda station.
Gardaí also highlighted a list of victim support groups available on their website.

They said the motive for the attacks appeared to be for money - although violence was used.
The force described the incidents as "terrifying" for the injured parties, who are both women and men.
On each occasion an online appointment is made, but when the 'client' arrives the sex worker is attacked and robbed by a number of men.


In general, for all high-level I/O functions, if the option parameter is 0, whatever HDUs are involved are either written to a newly created file or appended to the end of an existing file. In other words, no existing data is destroyed. However, if the option parameter is Overwrite, whatever HDUs are involved overwrite HDU number extver.
For putSingleGroup:
if option is 0, extver is ignored
if the file does NOT exist
the global header is written and
the single group is written
else if the file DOES exist
the single group is appended
endif
else if option is Overwrite
the file MUST exist
the single group overwrites HDU number extver
endif
For putSingleGroupHdr:
if option is 0
the file must NOT exist
the primary HDU is written
else if option is Overwrite
the file MUST exist
the primary HDU is overwritten
endif


BACK TO THE FUTURE III A film review by Randy Parker Copyright 1996 Randy Parker
RATING: ** (out of ****)
(Review written in 1989)
BACK TO THE FUTURE II ended with Doc Brown and Marty McFly buried up to their necks in time-travel mayhem. The fun of BACK TO THE FUTURE III should have been watching Marty and Doc solve all the paradoxes they created in part two. But unfortunately, director Robert Zemeckis and screenwriter Bob Gale somehow got sidetracked with the idea of making a Western.
Virtually all of BACK TO THE FUTURE III is set in the Wild West circa 1885 so you have to judge the film _first_ as a Western and _then_ as a time-travel movie. As a Western, BACK TO THE FUTURE III is as flat as a pancake. The plot is merely a sequence of ho-hum cliches, from the big showdown to a train hijacking. They say the Western is dead; Back to the Future III seems determined to prove it.
Worse yet, the movie doesn't seem to care if its story line is consistent with the first two films. Parts one and two were meticulously thought-out in terms of the dangers of time travel. Part three, on the other hand, shows blatant disregard for the time continuum. The filmmakers sweep all of the dangling plot strands from part two under the rug and then expect you to forget about them. You're supposed to believe that in one fell swoop, Marty and Doc fix all of the paradoxes in all four of the time periods.
BACK TO THE FUTURE III is the only installment in the series that wastes the supporting cast. Thomas Wilson sparkled in the last movie as the various versions of Biff, but here he gives a tiresome, one-note performance as "Mad Dog" Tannen, Biff's ill-tempered, Wild West ancestor. Lea Thompson, who always has been so charming as Marty's mother, has two meaningless scenes as his Great Great Grandmother. Mary Steenburgen has the unenviable task of bringing to life a half-baked love affair with Christopher Lloyd, who, according to the New York Times, receives his first ever screen kiss in BACK TO THE FUTURE III.
There's a sense of complacency about part three; it seems as if the filmmakers just phoned the movie in after they came up with the Wild West gimmick. The film lacks the creative flair and whimsical imagination that has made the series so much fun. Even Bill and Ted's adventure was more excellent than BACK TO THE FUTURE III.
P.S. How does a city boy, like Marty McFly, know how to ride a horse so well?
~~~~~~~~~~ Randy Parker http://www.shoestring.org --> "1,000 Voices In The Dark" --> Weekly Movie Reviews & Interviews
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Here the image asset is loaded via a Javascript XHR from a "CDN" that allows Cross-Origin-Resource-Sharing. The image load script checks to ensure that the image has not been tampered with.
This demo also wraps the image asset in a layer of encryption using SJCL. The encryption key never needs to touch the CDN server. This adds significant protection from snooping by the CDN - assuming they don't host the rest of the site.
This demo uses an image, but it works for CSS, Javascript, Fonts, and so on. This would be easy to add to an async JS loader.
Do you trust cdnjs? bootstrapcdn? aspnetcdn? googlecdn? You shouldn't need to. Most of them support CORS and you could start verifying these today. It could be quite easy to integrate this into an async loader framework.
This solution can't protect your initial set of downloads, but it can certainly reduce the number of ways that could have a bad time (security wise).


You can create a custom Table Type dedicated to AJAX-sourced data. This approach has the advantage of being totally reuasble, while the AJAX via data function may be less reuasble across multiple table instances.
The example bellow reuses 2 times the same logic, changing only the data
parameter to a different endpoint.
If you want to customize the behavior of multiple tables, you may want to check how to use custom handlers.


An Immersive Scholar project.
The Collectome can help you curate, find, and display content for your wall.
Curate a collection of media that fits your display.
View community collections and remix them to suit your needs. Share your own collections.
Point a fullscreen web browser at your collection or playlist for an immersive exhibit.


We optimize mices!
- deliver e-business methodologies
- synthesize scalable niches
- transition integrated content
- architect web-enabled models
- syndicate cross-platform e-markets
- recontextualize leading-edge portals
- cultivate interactive partnerships
- whiteboard end-to-end networks
- monetize interactive relationships
- brand value-added relationships


WHY iSMARTMANDU?
Seems like something a laidback guy sleeping until late afternoons in his mid twenty’s would say. But every once in a while, that guy makes it big to everyone’s astonishment! Ever since its foundation in 1974, Specialized bicycles have delivered superb bicycles every year from trail bikes to mountain bikes and everything in between. It’s a name for quality and one of the best in the world!
OUR PRODUCTS
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi voluptate hic provident nulla repellat facere esse molestiae ipsa labore porro minima quam quaerat rem, natus repudiandae debitis est sit pariatur.
BICYCLES
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit maiores nam, aperiam minima assumenda deleniti hic.
APPARELS
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit maiores nam, aperiam minima assumenda deleniti hic.
HELMETS
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit maiores nam, aperiam minima assumenda deleniti hic.


Saanich councillors may ask B.C. to 'modernize' act governing speed limits
by Richard WattsSaanich councillors will consider whether to send Premier John Horgan a letter asking for a “modernization” of the Highway Traffic Act.
Saanich Mayor Fred Haynes said in a telephone interview Monday he believes a good look at the act will result in a provincewide reduction on residential speeds from 50 kilometres an hour to 40.
Haynes said such a reduction would reduce fuel consumption, decrease the production of greenhouse gases and improve safety and so reduce medical costs.
He said as a municipality, the District of Saanich already has the option of reducing speeds on its own streets. But he fears if municipalities start acting on their own initiative, it will create a patchwork of speed limits across the province that will confuse and confound drivers instead of changing habits.
Councils throughout the province, through the Union of B.C. Municipalities, have been asking for such changes for years but past provincial governments have failed to act, Haynes said.
The motion was scheduled for debate Monday evening.


Contact¶
Mailing Lists¶
We have a few mailing lists hosted by Apache:
User mailing list: A list for general user questions about Kafka®. To subscribe, send an email to<EMAIL_ADDRESS>Once subscribed, send your emails to<EMAIL_ADDRESS>Archives are available here.
Developer mailing list: A list for discussion on Kafka® development. To subscribe, send an email to<EMAIL_ADDRESS>Once subscribed, send your emails to<EMAIL_ADDRESS>Archives are available here.
JIRA mailing list: A list to track Kafka® JIRA notifications. To subscribe, send an email to<EMAIL_ADDRESS>Archives are available here.
Commit mailing list: A list to track Kafka® commits. To subscribe, send an email to<EMAIL_ADDRESS>Archives are available here.
A searchable archive of the mailing lists is available at search-hadoop.com.
To unsubscribe from any of these you just change the word “subscribe” to “unsubscribe” in the email adresses above.
Prior to the move to Apache we had a Google group we used for discussion. Archives can be found here. After that we were in Apache Incubator which has its own archives for user, dev, and commit lists.
IRC¶
We have an IRC channel where there is often a few people hanging around if you want an interactive discussion. You can find us on chat.freenode.net in #apache-kafka room (previously #kafka). The irc log can be found here.


Since Product Summit is a hybrid event (available in-person and online), we are requiring that all employees that want to attend in-office must adhere to Lucid's optional return to work policy. Employees must be vaccinated, are not required to wear a mask or social distance, but must adhere to Lucid's 25% office capacity policy. Sign up here if you are interested in attending in-office.
There will also be outdoor activities that will be open to all employees.*
* Limited to groups of 50 or less.
Please do not attend any in-person events if you are not feeling well or have any symptoms associated with COVID-19.


« back to examples
This example loads a csv file with randomly generated data. It contains following columns:
- A, B, C, D which are only available in the 'DragDrop' area of the UI,
- E which is entirely hidden,
- x,y,e which are only available as arguments to aggregators,
- z which is available as an argument for aggregator functions as well as within the 'DragDrop' area.


Coronavirus disease (COVID-19) is an infectious disease caused by a newly discovered coronavirus.
Most people infected with the COVID-19 virus will experience mild to moderate respiratory illness and recover without requiring special treatment. Older people, and those with underlying medical problems like cardiovascular disease, diabetes, chronic respiratory disease, and cancer are more likely to develop serious illness.
The best way to prevent and slow down transmission is be well informed about the COVID-19 virus, the disease it causes and how it spreads. Protect yourself and others from infection by washing your hands or using an alcohol based rub frequently and not touching your face.
The COVID-19 virus spreads primarily through droplets of saliva or discharge from the nose when an infected person coughs or sneezes, so it’s important that you also practice respiratory etiquette (for example, by coughing into a flexed elbow).
At this time, there are no specific vaccines or treatments for COVID-19. However, there are many ongoing clinical trials evaluating potential treatments. WHO will continue to provide updated information as soon as clinical findings become available.
The COVID-19 virus affects different people in different ways. COVID-19 is a respiratory disease and most infected people will develop mild to moderate symptoms and recover without requiring special treatment. People who have underlying medical conditions and those over 60 years old have a higher risk of developing severe disease and death.
People with mild symptoms who are otherwise healthy should self-isolate and contact their medical provider or a COVID-19 information line for advice on testing and referral. People with fever, cough or difficulty breathing should call their doctor and seek medical attention.


Reports unclosed or unopened xml tags in Scala xml notation.
xml
In the following example, open is marked as unopened:
open
val someXml = <xml> </open> </xml>


| Modifier and Type | Method and Description |
|---|---|
float |
SchedulingStudyPlanProblem.alocateAllSubjects(DayPlanGeneVectorIndividual individual)
I really need to study all subjects that I put in my plan.
|
float |
SchedulingStudyPlanProblem.calculateFitnessValue(DayPlanGeneVectorIndividual individual)
Responsible for to calculate the fitness value of the individual
in related of the contraints below.
|
float |
SchedulingStudyPlanProblem.fillPeriodsAvailable(DayPlanGeneVectorIndividual individual)
Try to fill the period of the day that the user
have disponibility to study.
|
int |
SchedulingStudyPlanProblem.getQttHoursAvailable(DayPlanGeneVectorIndividual individual)
get the quantity of hours available in all study plan.
|
int |
SchedulingStudyPlanProblem.getQttRealOfHours(DayPlanGeneVectorIndividual individual,
Subject subject)
Get the sum of the all workload of the subject in the
all study plan.
|
float |
SchedulingStudyPlanProblem.hardSubjectInEasyPeriod(DayPlanGeneVectorIndividual individual)
Hard Subjects should be alocated in the period of the day that the user
have more intelectual facility for to learn.
|
float |
SchedulingStudyPlanProblem.haveDifferentDayPlans(DayPlanGeneVectorIndividual individual)
Generate individuals that contains the max
number of distinct genes.
|
float |
SchedulingStudyPlanProblem.hoursToLeisure(DayPlanGeneVectorIndividual individual)
Verify if the student hours to leisure was attended.
|
float |
SchedulingStudyPlanProblem.maxSixHoursPerPeriod(DayPlanGeneVectorIndividual individual)
Check if exist periods that the sum of workload is greather
than 6 hours.
|
float |
SchedulingStudyPlanProblem.notWasteAllTimeInTheSameSubject(DayPlanGeneVectorIndividual individual)
Check if the subjects are studies in one time only.
|
float |
SchedulingStudyPlanProblem.subjectInInappropriatePeriod(DayPlanGeneVectorIndividual individual)
Check if have subjects in the period of the day who the
user don't have disponibility.
|
float |
SchedulingStudyPlanProblem.subjectMoreDificultyNeedMoreTime(DayPlanGeneVectorIndividual individual)
Subjects that contains more dificulty needs more
time to study.
|
float |
SchedulingStudyPlanProblem.toStudyGradually(DayPlanGeneVectorIndividual individual)
Check if the study plan have grow-up learn.
|