text:
Ext.define('Rally.technicalservices.ArtifactTree',{
    logger: new Rally.technicalservices.Logger(),
    mixins: {
        observable: 'Ext.util.Observable'
    },

    rootArtifact: undefined,
    modelHash: null,
    portfolioItemTypes: undefined,
    childTypesBlacklist: undefined,
    parentChildTypeMap: null,
    blacklistFields: null,

    stoppedByError: false,

    constructor: function(config){

        this.blacklistFields = ['Workspace','Attachments','Tags','Discussion','Milestones'];
        this.childTypesBlacklist = config.childTypesBlacklist || ['testcase','defectsuite','defect'];
        this.parentChildTypeMap = this._setupParentChildMap(config.portfolioItemTypes);
        this.modelHash = {};

        this.level1TemplateField = config.level1TemplateField || null;
        this.level2TemplateField = config.level2TemplateField || null;
        this.level3TemplateField = config.level3TemplateField || null;

        this.mixins.observable.constructor.call(this, config);

    },
    load: function(rootArtifact, rootParent){
        this.logger.log('load:', rootArtifact, rootParent);

        this.totalRecords = 1;
        this.tree = {};
        this.stoppedByError = false;
        this.rootArtifact = rootArtifact;
        this.rootParent = rootParent && rootParent.FormattedID  || null;
        if (rootParent && this.level1TemplateField){
            this._fetchGrandparent(rootParent).then({
                success: function(grandparent){
                    this.rootGrandparent = grandparent;
                    this._loadModel(rootArtifact);
                },
                scope: this
            });
        } else {
            this.rootGrandparent = null;
            this._loadModel(rootArtifact);
        }
    },
    _updateStatus: function(){
        this.fireEvent('statusupdate', this.completedArtifacts, this.totalArtifacts);
    },
    deepCopy: function(parent){
        this.logger.log('..deepCopy..');
        var me = this;
        this.totalArtifacts = _.keys(this.tree).length || 0;
        this.completedArtifacts = 0;

        this.fireEvent('statusupdate', 0, this.totalArtifacts);
        var overrides = {PortfolioItem: "", Parent: ""};
        if (this.level1TemplateField){
            overrides[this.level1TemplateField] = this.rootArtifact.get('FormattedID'); //this.rootGrandparent;
        }
        if (this.level2TemplateField){
            overrides[this.level2TemplateField] = this.rootParent;
        }
        if (this.level3TemplateField) {
            overrides[this.level3TemplateField] = this.rootArtifact.get('FormattedID');
        }
        this.logger.log('deepCopy.overrides',overrides);
        me._copyStandaloneArtifacts(overrides).then({
            success: function(){
                this.logger.log('deepCopy. _copyStandaloneArtifacts success');
                Deft.Chain.sequence([
                    function() { return me._copyTasks(); },
                    function() { return me._updateCollections(); },
                    function() { return me._stitchArtifacts(); },
                    function() { return me._copyAttachments(); }
                ],me).then({
                    success: function(){
                        this.logger.log('set parent', parent.get('_ref'));
                        var root = me.tree[me.rootArtifact.get('ObjectID')].copyRecord;
                        parent.get('_type') == "portfolioitem/feature" ? root.set("PortfolioItem", parent.get('_ref')):root.set("Parent", parent.get('_ref'));

                        root.save().then({
                            success: function(result, operation){
                                me.fireEvent('copycompleted', me.tree[me.rootArtifact.get('ObjectID')].copyRecord);
                            },
                            failure: function(operation){
                                me.fireEvent('copyerror', Ext.String.format("Error stitching {0} to {1}: {2}", me.rootArtifact.copyRecord.get('FormattedID'), parent.get('FormattedID'), operation.error.errors.join(',')));
                            },
                            scope: this
                        });
                    },
                    failure: function(msg){
                        console.error(msg);
                        me._deleteArtifacts();
                        me.fireEvent('copyerror',msg);
                    },
                    scope: me
                });
            },
            failure: function(msg){
                this.logger.log('deepCopy. _copyStandaloneArtifacts failure', msg);
            },
            scope: this
        });
    },
    _deleteArtifacts: function(){
        this.logger.log('_deleteArtifacts');
        var tasks = [],
            artifacts = [];

        _.each(this.tree, function(artifact, oid) {
            //first we need to delete tasks
            if (artifact.copyRecord) {
                if (artifact.copyRecord.get('_type').toLowerCase() === 'task') {
                    tasks.push(artifact);
                } else {
                    artifacts.push(artifact);
                }
            }
        });

        var promises = [];
        _.each(tasks, function(t){
            promises.push(function(){ return this._deleteArtifact(t)});
        }, this);
        _.each(artifacts, function(a){
            promises.push(function(){ return this._deleteArtifact(a)});
        }, this);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                this.logger.log('artifacts deleted');
            },
            scope: this
        });
    },
    _deleteArtifact: function(artifact){
        var deferred = Ext.create('Deft.Deferred');

        artifact.deleted = false;
        if (artifact.copyRecord){
            var fid = artifact.copyRecord.get('FormattedID');
            artifact.copyRecord.destroy({
                callback: function(result, operation){
                    this.logger.log('artifact deleted',fid, operation.wasSuccessful(), result, operation);
                    if (operation.wasSuccessful()){
                        artifact.copyRecord = null;
                        artifact.deleted = true;
                    }
                    deferred.resolve();
                },
                scope: this
            });
        }
        return deferred;
    },
    _copyStandaloneArtifacts: function(overrides){
        this.logger.log('_copyStandaloneArtifacts', overrides);
        var promises = [],
            deferred = Ext.create('Deft.Deferred');

        _.each(this.tree, function(obj, oid){
            if (obj.record.get('_type').toLowerCase() !== 'task' && !obj.copyRecord){
                // promises.push(this.copyArtifact(oid, overrides));
                promises.push(function() {
                    return this.copyArtifact(oid, overrides);
                });
            }
        }, this);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                deferred.resolve();
            },
            failure: function(msg){
                deferred.reject(msg);
            },
            scope: this
        });
        return deferred;
    },
    _stitchArtifacts: function(){
        this.logger.log('_stitchArtifacts');

        var promises = [],
            deferred = Ext.create('Deft.Deferred');

        _.each(this.tree, function(obj, oid){

            var childTypes = this.parentChildTypeMap[obj.record.get('_type').toLowerCase()] || [],
                newParentRef = obj.copyRecord && obj.copyRecord.get('_ref');

            _.each(childTypes, function(ct){
                var children = obj[ct.collectionName] || [];
                if (children.length > 0){
                    _.each(children, function(childOid){
                        if (this.tree[childOid].copyRecord){
                            this.tree[childOid].copyRecord.set(ct.parentField, newParentRef);
                            promises.push(function(){ return this.tree[childOid].copyRecord.save(); });
                        }
                    }, this);
                }
            },this);
        }, this);

        this.logger.log('_stitchArtifacts', promises.length);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                this.logger.log('_stitchArtifacts success');
                deferred.resolve();
            },
            failure: function(msg){
                this.logger.log('_stitchArtifacts failed', msg);
                deferred.reject(msg);
            },
            scope: this
        });

        return deferred;
    },
    _getNewRefs: function(oldOids, collectionField){
        var newRefs = [];
        if (collectionField === 'Predecessors'){
            _.each(oldOids, function(oid){
                if (this.tree[oid] && this.tree[oid].copyRecord){
                    newRefs.push(this.tree[oid].copyRecord.get('_ref'));
                }
            }, this);
        }
        return newRefs;
    },
    _updateCollections: function(){
        this.logger.log('_updateCollections start');
        var promises = [],
            deferred = Ext.create('Deft.Deferred'),
            collectionFields = ['Predecessors','Tags'];

        _.each(this.tree, function(obj, oid) {
            _.each(collectionFields, function (cf) {
                if (obj[cf] && obj[cf].length > 0) {
                    if (cf === 'Predecessors') {
                        promises.push(function () {
                            var newRefs = this._getNewRefs(obj[cf], cf)
                            return this._updateCollection(obj.copyRecord, cf, newRefs);
                        });

                    } else if (cf === 'Tags') {

                        promises.push(function () {
                            var newRefs = obj[cf];
                            return this._updateCollection(obj.copyRecord, cf, newRefs);
                        });
                    }
                }
            }, this);
        });

        this.logger.log('_updateCollections promises', promises.length);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                this.logger.log('_updateCollections success');
                deferred.resolve();
            },
            failure: function(msg){
                this.logger.log('_updateCollections failed', msg);
                deferred.reject(msg);
            },
            scope: this
        });

        return deferred;
    },

    _updateCollection: function(newArtifact, collectionName, collectionRefs){
        this.logger.log('_updateCollection', collectionName, newArtifact, collectionRefs);

        var me = this,
            deferred = Ext.create('Deft.Deferred'),
            store = newArtifact.getCollection(collectionName);

        store.load({
            callback: function(){
                me.logger.log("_updateCollection after store load");
                if ( collectionRefs.length === 0 ) { deferred.resolve(); }

                Ext.Array.each(collectionRefs, function(cr){
                    store.add(cr)
                });
                store.sync({
                    callback: function(){
                        me.logger.log("_updateCollection after store sync");
                        deferred.resolve();
                    }
                });
            }
        });
        return deferred.promise;
    },

    _updateArtifact: function(rec){
        var deferred = Ext.create('Deft.Deferred');
        this.logger.log('updateArtifact');
        rec.save({
            callback: function(result, operation){
                if(operation.wasSuccessful()) {
                    deferred.resolve();
                } else {
                    deferred.reject("Update for " + rec.get('FormattedID') + " failed: " + operation.error.errors.join(','));
                }
            }
        });
        return deferred;
    },
    _copyTasks: function(){
        this.logger.log('_copyTasks');
        var me = this,
            promises = [],
            deferred = Ext.create('Deft.Deferred');

        _.each(this.tree, function(obj, oid){
            if (obj.record.get('_type').toLowerCase() === 'task'){
                //find parent
                var parent = me._getTaskParentRef(oid);
                if (parent){
                    promises.push(function(){ return me.copyArtifact(oid, {WorkProduct: parent}); });
                }
            }
        }, this);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                this.logger.log('_copyTasks success');
                deferred.resolve();
            },
            failure: function(msg){
                this.logger.log('_copyTasks fail', msg);
                deferred.reject(msg);
            },
            scope: this
        });
        return deferred;
    },

    _copyAttachments:function(source_artifact,target_artifact) {
        this.logger.log('_copyAttachments');
        var me = this,
            promises = [],
            deferred = Ext.create('Deft.Deferred');

        _.each(this.tree, function(obj, oid){
            var attachment_oids = obj.Attachments;
            var parent_record = obj.copyRecord;

            if ( !parent_record ) {
                me.logger.log("_copyAttachments no copy record", obj);
            } else {
                Ext.Array.each(attachment_oids, function(attachment_oid){
                    promises.push( function() {
                        return me.copyAttachment(attachment_oid,parent_record);
                    });
                });
            }
        }, this);

        Deft.Chain.sequence(promises, this).then({
            success: function(){
                me.logger.log('_copyAttachments resolve');
                deferred.resolve();
            },
            failure: function(msg){
                deferred.reject(msg);
            },
            scope: this
        });
        return deferred;
    },

    _getTaskParentRef: function(taskOid){
        var parentOid = null;

        _.each(this.tree, function(obj, oid){
            var tasks = obj && obj.Tasks || [];

            if (Ext.Array.contains(tasks, Number(taskOid))){
                parentOid = obj.copyRecord && obj.copyRecord.get('ObjectID') || null;
                return false;
            }
        });
        return parentOid;
    },
    copyArtifact: function(artifactOid, overrides){
        var deferred = Ext.create('Deft.Deferred'),
            artifact = this.tree[artifactOid].record;
        this.logger.log('copyArtifact', artifact.get('FormattedID'));

        this._fetchModel(artifact.get('_type')).then({
            success: function(model){
                var fields = this.getFieldsToCopy(artifact,overrides);

                Ext.create(model, fields).save({
                    callback: function(result, operation){
                        this.logger.log('copyArtifact callback',artifact.get('FormattedID'), operation.wasSuccessful(), result, operation);
                        if (operation.wasSuccessful()){
                            this.tree[artifactOid].copyRecord = result;

                            this.completedArtifacts++;
                            this._updateStatus();
                            deferred.resolve();
                        } else {
                            this.tree[artifactOid].copyRecord = null;
                            this.tree[artifactOid].error = operation.error.errors.join(',');
                            deferred.reject(operation.error.errors.join(','));
                        }
                    },
                    scope: this
                });
            },
            failure: function(msg){
                deferred.reject(msg);
            },
            scope: this
        });
        return deferred;
    },

    copyAttachment: function(oid,parent_record) {
        this.logger.log("copyAttachment", oid, parent_record);

        var deferred = Ext.create('Deft.Deferred'),
            me = this;

        Deft.Chain.sequence([
            function() { return me._fetchModel('Attachment'); },
            function() { return me._fetchModel('AttachmentContent'); }
        ]).then({
            success: function(models){
                var attachment_model = models[0];
                var attachment_content_model = models[1];

                attachment_model.load(oid, {
                    fetch: ['ObjectID','Content','ContentType','Description','Name','Size','Summary'],
                    callback: function(source_attachment, operation) {
                        if(operation.wasSuccessful()) {
                            var content_oid = source_attachment.get('Content').ObjectID;
                            attachment_content_model.load(content_oid, {
                                fetch: ['Content'],
                                callback: function(source_attachment_content, operation) {
                                    if(operation.wasSuccessful()) {
                                        var content = source_attachment_content.get('Content');

                                        Ext.create(attachment_content_model, { 'Content': content }).save({
                                            callback: function(content_record,operation) {
                                                if (operation.wasSuccessful()) {
                                                    Ext.create(attachment_model, {
                                                        Artifact   : parent_record.get('_ref'),
                                                        Content    : content_record.get('_ref'),
                                                        ContentType: source_attachment.get('ContentType'),
                                                        Name       : source_attachment.get('Name'),
                                                        Description: source_attachment.get('Description'),
                                                        Size       : source_attachment.get('Size'),
                                                        Summary    : source_attachment.get('Summary')
                                                    }).save({
                                                        callback: function(attachment, operation){
                                                            if (operation.wasSuccessful()){
                                                                console.log('Saved attachment: ', source_attachment.get('Name'));
                                                                deferred.resolve();
                                                            } else {
                                                                deferred.reject(operation.error.errors.join(','));
                                                            }
                                                        }
                                                    });
                                                } else {
                                                    deferred.reject(operation.error.errors.join(','));
                                                }
                                            }
                                        });
                                    } else {
                                        deferred.reject(operation.error.errors.join(','));
                                    }
                                }
                            });
                        } else {
                            deferred.reject(operation.error.errors.join(','));
                        }
                    }
                });
            },
            failure: function(msg){
                deferred.reject(msg);
            },
            scope: this
        });
        return deferred;
    },

    getFieldsToCopy: function(artifactToCopy, overrideFields){
        var fields = artifactToCopy.getFields(),
            copyableFields = _.filter(fields, this._fieldIsCopyable, this),
            fieldHash = {};

        //this.logger.log('getFieldsToCopy',copyableFields);

        _.each(copyableFields, function(f){

            //if field is collection and count === 0, then it can be null, otherwise, we need to copy the cooleciton
            if (f.attributeDefinition.AttributeType !== "COLLECTION"){
                var val = artifactToCopy.get(f.name); // || null;

                if (val && Ext.isObject(val)){  //If this is a reference field, then we need to use the ObjectId
                    val = val._ref;
                }

                if (_.has(overrideFields, f.name)){
                    val = overrideFields[f.name];
                }
                //this.logger.log('field', f.name, f.attributeDefinition.AttributeType, val,artifactToCopy.get(f.name));
                if (val){
                    fieldHash[f.name] = val;
                }
            }
        }, this);
        //this.logger.log('getFieldsToCopy fieldHash', fieldHash)

        return fieldHash;
    },
    _fieldIsCopyable: function(field){

        if (Ext.Array.contains(this.blacklistFields, field.name)){

            return false;
        }
        if (field.hidden || field.readOnly){

            return false;
        }
        if (field.attributeDefinition){

            return true;
        }
        return false;
    },

    _loadModel: function(artifact){
        this._fetchModel(artifact.get('_type')).then({
            success: function(model) {
                this.logger.log('_loadModel success');
                this._loadArtifact(model, artifact);
            },
            failure: function(msg){
                this.tree[artifact.get('ObjectID')].error = msg;
                this._checkForDoneness(msg);

            },
            scope: this
        });

    },
    _loadArtifact: function(model, artifact){
        this.logger.log('_loadArtifact', artifact);
        if (this.stoppedByError){
            return;
        }

        var oid = artifact.get('ObjectID');
        model.load(oid, {
            fetch: true,
            scope: this,
            callback: function(loadedArtifact, operation) {
                if(operation.wasSuccessful()) {
                    this.logger.log('_loadArtifact success', oid, loadedArtifact);
                    this.tree[oid] = this.getTreeNode(loadedArtifact);
                    this._loadArtifactCollections(loadedArtifact);
                    //this._loadArtifactChildren(loadedArtifact);
                } else {
                    this.logger.log('_loadArtifact failure', oid, operation);
                    var msg = Ext.String.format("Failed to load {0}/{1} with error: {2} ",artifact.get('_type'),artifact.get('ObjectID'),operation.error.errors.join(','));
                    this.tree[oid].error = msg;
                    this._checkForDoneness(msg);
                }
            }
        });
    },
    getTreeNode: function(artifact){
        return {record: artifact, error: null, childCount: {}};
    },
    _loadArtifactCollections: function(artifact){
        var collectionFields = ['Predecessors','Tags','Attachments'],
            promises = [];

        _.each(collectionFields, function(cf){
            if (artifact.get(cf) && artifact.get(cf).Count && artifact.get(cf).Count > 0){
                //promises.push(this._loadCollection(artifact, cf, false, cf === 'Tags'));
                promises.push(function() {
                    return this.copyArtifact(oid, overrides);
                });
            }
        }, this);

        if (promises.length > 0){
            Deft.Chain.sequence(promises).then({
                success: function(){
                    this.logger.log('artifact collections loaded', artifact);
                    this._loadArtifactChildren(artifact)
                },
                failure: function(){},
                scope: this
            });
        } else {
            this._loadArtifactChildren(artifact);
        }
    },
    _loadArtifactChildren: function(artifact){
        if (this.stoppedByError){
            return;
        }

        var childrenToLoad = this.parentChildTypeMap[artifact.get('_type').toLowerCase()],
            collectionsLoading = 0;

        childrenToLoad = _.filter(childrenToLoad, function(c){
            if (!Ext.Array.contains(this.childTypesBlacklist, c.typePath)){
                return true;
            }
        }, this);

        this.logger.log('_loadArtifactChildren',childrenToLoad, this.parentChildTypeMap, artifact.get('_type').toLowerCase());
        _.each(childrenToLoad, function(c){
            this.logger.log('_loadArtifactChildren child',c, artifact.get(c.collectionName).Count);
            if (artifact.get(c.collectionName).Count > 0){
                this.totalRecords = this.totalRecords + artifact.get(c.collectionName).Count;
                this._loadCollection(artifact, c.collectionName, true);
            }
        }, this);

        if (collectionsLoading === 0){
            this._checkForDoneness();
        }
    },
    _checkForDoneness: function(errorMessage){
        this.logger.log('_checkForDoneness', this.tree, this.totalRecords, _.keys(this.tree).length, errorMessage);
        if (errorMessage){
            this.stoppedByError = true;
            this.fireEvent('error', errorMessage);
            return;
        }
        if (this.tree && _.keys(this.tree).length === this.totalRecords){
            this.logger.log('TREE LOADED!')
            this.fireEvent('treeloaded', this);
        }
    },
    _loadCollection: function(artifact, collectionName, loadRecord, preserveRefs){
        var deferred = Ext.create('Deft.Deferred'),
            parentOid = artifact.get('ObjectID');

        this.tree[parentOid][collectionName] = [];

        artifact.getCollection(collectionName).load({
            fetch: ['ObjectID'],
            callback: function(records, operation, success) {
                this.logger.log('_loadCollection callback', collectionName, records, success);

                if (success){
                    _.each(records, function(r){
                        var val = r.get('ObjectID');
                        if (preserveRefs){
                            val = r.get('_ref');
                        }
                        this.tree[parentOid][collectionName].push(val);
                        if (loadRecord){
                            this._loadModel(r);
                        }
                    }, this);
                    deferred.resolve();
                } else {
                    var msg = Ext.String.format("Failed to load collecton for {0}/{1} with error: {2} ",artifact.get('_type'),artifact.get('ObjectID'),operation.error.errors.join(','));
                    this.tree[parentOid].error = msg;
                    this._checkForDoneness(msg);
                    deferred.reject(msg);
                }
            },
            scope: this
        });

        return deferred;
    },
    _fetchModel: function(type){
        var deferred = Ext.create('Deft.Deferred');
        if (this.modelHash[type]){
            deferred.resolve(this.modelHash[type]);
        } else {
            Rally.data.ModelFactory.getModel({
                type: type,
                success: function(model){
                    this.modelHash[type] = model;
                    deferred.resolve(model);
                },
                failure: function(){
                    var msg = 'Failed to load model: ' + type;
                    this._checkForDoneness(msg);
                    deferred.reject(msg);
                },
                scope: this
            });
        }
        return deferred;
    },
    _setupParentChildMap: function(portfolioItemsByOrdinal){
        var parentChildTypeMap = {
            hierarchicalrequirement: [
                {typePath: 'defect', collectionName: 'Defects', parentField: 'Requirement'},
                {typePath: 'task', collectionName: 'Tasks', parentField: 'WorkProduct'},
                {typePath: 'testcase', collectionName: 'TestCases', parentField: 'WorkProduct'},
                {typePath: 'hierarchicalrequirement', collectionName: 'Children', parentField: 'Parent'}
            ],
            defect: [
                {typePath: 'task', collectionName: 'Tasks', parentField: 'WorkProduct'},
                {typePath: 'testcase', collectionName: 'TestCases', parentField: 'WorkProduct'}
            ],
            defectsuite: [
                {typePath: 'defect', collectionName: 'Defects', parentField: 'DefectSuites'},
                {typePath: 'task', collectionName: 'Tasks', parentField: 'WorkProduct'},
                {typePath: 'testcase', collectionName: 'TestCases', parentField: 'WorkProduct'}
            ],
            testset: [
                {typePath: 'task', collectionName: 'Tasks', parentField: 'WorkProduct'},
                {typePath: 'testcase', collectionName: 'TestCases', parentField: 'TestSets'}
            ]
        };

        if (portfolioItemsByOrdinal && portfolioItemsByOrdinal.length > 0){
            parentChildTypeMap[portfolioItemsByOrdinal[0].toLowerCase()] = [{typePath: 'hierarchicalrequirement', collectionName: 'UserStories', parentField: 'PortfolioItem'}];

            for (var i = 1; i<portfolioItemsByOrdinal.length ; i++){
                parentChildTypeMap[portfolioItemsByOrdinal[i].toLowerCase()] = [{typePath: portfolioItemsByOrdinal[i-1], collectionName: 'Children', parentField: 'Parent'}];
            }
        }
        return parentChildTypeMap;
    },
    _fetchGrandparent: function(parentObj){
        var deferred = Ext.create('Deft.Deferred');

        Ext.create('Rally.data.wsapi.Store',{
            model: parentObj._type,
            fetch: ['Parent','FormattedID'],
            filters: [{
                property: 'FormattedID',
                value: parentObj.FormattedID
            }]
        }).load({
            callback: function(records, operation){
                if (operation.wasSuccessful()){
                    deferred.resolve(records[0] && records[0].get('Parent') && records[0].get('Parent').FormattedID);
                } else {
                    deferred.reject('Error loading parent record: ' + operation.error.errors.join(','));
                }
            }
        });

        return deferred;
    }
});

redpajama_set_name: RedPajamaGithub


Many conventional advertising methods are quickly losing their lustre as technological innovations, such as virtual reality and augmented reality, prepare to hit the mainstream and allow chief marketing officers (CMOs) to utilise exciting new mediums and enhance user experience. Not only are these solutions on course to change the role of CMOs but they are also delivering truly immersive experiences and engaging with consumers in ways never before thought possible.
"In the past 12 months we have seen several instances of CMOs taking spend in its entirety from above the line and redistributing it into experiential for certain product launches – cementing the fact that this discipline is fast becoming the authentic marketing of choice for many leading brands," says Michael Wyrley-Birch, Chief Operating O cer EMEA of experiential marketing agency TRO.
It's not just retailers who can bene t from virtual reality and other immersive and experimental marketing technologies, but companies in industries as diverse as construction, travel and banking can take advantage of these innovative marketing mediums and increse user experience. Immersive brand experiences are not a new phenomenon, with a number of US convenience stores being transformed into Kwik-e-Mart lookalikes to promote e Simpsons Movie as far back as 2007, but the combination of digital and physical is helping kick-start the next phase of experiential marketing.
Fashion brand Vans created an in-store augmented reality experience following the launch of its MTE winter apparel collection. TRO worked with Vans on the campaign, which introduced consumers to a higher-priced clothing line tailored for rough terrain and winter environments.
Visitors to Vans shops in ve countries could interact with "trigger stickers" found all over the stores and could access augmented reality imaging through a phone app, themed around the clothing line.
Vans appealed to their tech-savvy and predominately young 18 to 34 customer base, by allowing them to creatively engage with the brand and explore the new collection at their own pace. This type of marketing activity can only be expected to grow in importance, especially among younger consumers. A recent survey by Eventbrite found that 78% of millennials would rather spend money on an experience than a possession, although using innovative technologies in a rudimentary way or as a novelty can't be expected to work in the long-term.
"It's important to not use technology for technology's sake – keeping it authentic, relevant and easy to engage with is an imperative part of any solution we recommend to our clients. Our ultimate objective is to get more people engaging with our experiences and it is exciting to see how creative technologies are helping us to achieve this," adds Wyrley-Birch.
in a range of industries to increase user experience, from launching a multi-million nationwide sampling campaign for Lucozade and delivering major brand experiences for BMW at the BMW PGA Championship and Nissan at the UEFA Champions League Final, showing there are few limits to the types of rms interested in immersive marketing campaigns.
Internet browser extensions like AdBlock allow users to remove virtually all digital ads and modern cable boxes give viewers the ability to skip through TV adverts easily, with younger generations most likely to use these tools. Marketers and businesses have therefore quickly discovered the importance of delivering interactive experiences that go beyond traditional content, but Damian Ferrar, Executive Creative Director at brand experience agency Jack Morton Worldwide, believes the real challenge for brands is to keep up with rising consumer expectations and to go beyond simply meeting standard expectations.
Providing thrilling immersive events and environments can create immediate engagement with consumers and enhance user experience, yet tools that are able to prove the exact return on investment are not yet available. Online tracking solutions are able to accurately calculate the value of digital adverts, but for burgeoning virtual reality, augmented reality and other immersive technologies, it will be years before this level of sophistication is reached.
However, it is simply a matter of time before immersive marketing truly revolutionises advertising, according to Stuart Bradbury, Managing Director at marketing agency Avantgarde UK. Bradbury explains that, thanks to advances in technology, the connection between brand experience and subsequent purchase behaviour is now much more clear to see.
"So the method now unites brand and commercial objectives. As well as being a living billboard and a content generator, brand experiences are now recognised as a crucial part of the sales process," says Bradbury. Immersive marketing rms are now using both traditional and innovative measurement methods to more accurately assess the impact of experiences. For example, surveying guests who attend immersive events to gauge their interest in the experience is happening alongside the use of mobile-based apps which guests can use to access di erent aspects of the event.
Both smaller brands and established multinationals can take advantage of the bene ts o ered by immersive marketing, without blowing their entire marketing budget. "Pop-Up activations a ord a retail style presence for brands with no retail footprint and are now becoming the central focus for a lot of marketing campaigns supported by PR, social and traditional media. In short, they can deliver a huge return on investment," adds Bradbury.
Brands are no doubt excited by the viral nature of many experimental experiences, with events pushing the bounds of creativity both dazzling attendants and massively boosting engagement numbers in addition to enhancing user experience. However, unrestrained experimental ideas can sometimes cross the line and generate headlines for all the wrong reasons.
In an attempt to promote the movie Mission Impossible III, lm studio Paramount Pictures placed 4,500 audio devices in LA Times newspaper racks, set to play the Mission Impossible theme tune when opened. Unfortunately for Paramount, a number of these devices were thought to be bombs and in one case a bomb squad was called to detonate a device.
This is is just one example of dozens of well- intentioned immersive and experimental marketing initiatives that signi cantly back red and caused major damage to brands, with Cadbury, IBM, Smirno and Puma all having fallen victim to inappropriate experimental campaigns.
The experimental and cutting-edge nature of these campaigns make them more likely to strike the wrong note with consumers, with a far higher level of scrutiny needed for these programmes in order to successfully enhance user experience. In the past, these concerns may have given businesses pause, but as long as brands consider the potential implications of experimental marketing and plan accordingly, the risks are similar to traditional advertising options.
The current uses of immersive marketing technologies may be intriguing to a wide consumer base, but the next stage of immersive marketing can be expected to go a step further. "As the production costs of using virtual and augmented reality technology in experiential marketing falls, we can expect to see both technologies used in ever more imaginative ways. We can also expect to see the fusion of immersive theatre and reality technology for brand activations where dwell time permits a truly immersive experience – sometimes lasting several hours," says Bradbury.
Immersive and experimental experiences are far more engaging than TV adverts or other digital solutions with this form of storytelling having the power to convert everyday consumers to strong brand advocates who can organically create a priceless buzz around a campaign. Users are far more likely to post on social media platforms, namely Instagram, Facebook and Twitter, when interacting with experimental experiences, as opposed to traditional TV adverts or digital ads.
While high-tech solutions will be vital to the widespread adoption of immersive marketing, companies should rst and foremost concentrate on creating something that will appeal to their customer base. Brands are no longer static and faceless, but rather a dynamic business asset with the power to enhance customer experiences and establish meaningful relationships with consumers, aided by experiential and immersive marketing mediums.
the centre of the poster in London's Brick Lane, easily accessible to passersby, with word quickly spreading online and a long line forming offline.
Wyrley-Birch of TRO concludes: "Ultimately experiential marketing is all about keeping it real for a brand. In a world where o ine is arguably the new luxury, sometimes the simplest engagements are the ones that can create the most authentic and memorable connections between brands and their consumers. It is about creating the right experience at the right time and place for the right people.


Maidma restaurant owner Kuhulo Kidane is very excited about soon being able to flip a switch to power her appliances. She has been using a diesel generator, spending 3000 Nakfa (USD 200) every week for her refrigerator and for lighting, on top of the 5,000 Nakfa (USD 333) she spends per month on firewood.
Restaurant owner Kuhulo kept soda bottles in a canvas bag to keep them cold and save on her energy costs.
Having a reliable source of renewable electricity means she can now use an electric oven to cook, reduce her costs substantially, and expand her business.
Around the world, 1.3 billion people lack access to electricity. More than 600 million are in sub-Saharan Africa. In Eritrea, approximately 32% of the national population have access to electricity, but only 3% in rural areas (REEEP).
The project targets off-grid rural towns and villages l population have access to electricity, but only 3% in rural areas (REEEP).
Eritrea embarked on a solar-powered project to provide modern, affordable and sustainable energy to some 40,000 residents and businesses in rural areas not served by the national grid. The densely populated rural towns of Areza and Maidma in the Southern Debub region were selected, along with 40 villages, over 500 small enterprises, 15 schools, 2 kindergartens, 2 community hospitals, and 5 health stations.
The $13.5M project is supported by the European Union and UNDP, and is implemented by the Ministry of Energy and Mines.
Solar-powered mini-grids help leapfrog connectivity issues for rural communities.
Solarcentury, a UK-based international solar company, designed and built two solar powered mini-grids using solar PV & lithium batteries. The two sites at Areza (1.5 acres) and Maidma (2.5 acres) aim to showcase that solar systems can provide grid-quality power to rural populations and provide a model for replication in other parts of Eritrea.
Mengis Zemichael, administrator of the Areza district, explains that local communities have been involved in activities like digging holes and putting up electricity posts.
"Areza residents are very excited about the project. Even on market days, they work from crack of dawn to around 9.00 am, then they go to the market. They only rest on Sundays," he says.
Community members have been digging holes and putting up electricity posts.
Electrical engineers work alongside the community, advising on the specifications and providing guidance on safety precautions. Engineer Filipos Tsegai is part of a 12-member team in Areza that will take over the management of the project from Solarcentury. He is confident that most of the homes will be lit by the end of September 2018.
A skilled technical team will take over operations of the solar mini-grids and supply will be managed by the national electricity company.
Johani Berhe, 75, a community elder who runs a bed and breakfast in Areza, already uses a solar system but for lighting only. With 40 rooms to light in his establishment he is eager to evaluate which option is more economical once electricity is installed.
Johani Berhe (in the middle) with the UNDP and the Ministry of Energy and Mines project managers.
Overall, the project will improve the livelihoods of the rural population through increased sources of income and access to social services. It is also anticipated to reduce carbon emissions by 3,000 tons annually.
But for Berekti Kibreab, a mother of 5, it is her new found freedom that prevails. She looks forward to watching TV with her family, use an oven and a fridge in her kitchen and see her children do their homework at night. " Once I get electricity in my house, I will throw out my rechargeable [battery-powered solar panel]," she says.
40,000 Eritreans will soon enjoy uninterrupted power and new economic opportunities.


text:
<?php

/* @Framework/Form/button_label.html.php */
class __TwigTemplate_29d42b35d63cdc6e7309e2c66326af2e67b3c42b88f4b9aaea1419eb9fea2c0a extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = false;

        $this->blocks = array(
        );
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
    }

    public function getTemplateName()
    {
        return "@Framework/Form/button_label.html.php";
    }

    public function getDebugInfo()
    {
        return array ();
    }
}


text:
package org.ontoware.rdf2go.model;

import java.io.Serializable;
import java.util.List;

import org.ontoware.aifbcommons.collection.ClosableIterable;

public interface QueryResultTable extends ClosableIterable<QueryRow>, Serializable {

	/**
	 * @return the list of all variable names used in the query.
	 */
	List<String> getVariables();

}


Thus, at the core, justification of every search/seizure is the probable cause necessary to support it. This is why the Supreme Court has established a framework of "fundamental rules" governing probable cause. For example, the court in Summers held that in the interests of crime detection/prevention and an officer's safety, the police may detain "the occupants of [a] premises" during the execution of a lawful search. Likewise, when a police officer has reasonable suspicion of criminal activity, he or she may conduct a brief "investigatory stop" without a warrant. The Summers court offered three reasons to justify the detention of an occupant during a premises search: officer safety, preventing flight, and facilitating the completion of the search.
And this brings us back to the Chunon Bailey case. The case began in July 2008 when a confidential informant told the police that he saw a gun in the Wyandanch, New York apartment of a heavy set black man known to him as "Polo" from whom the informant purchased drugs. While the police were obtaining a warrant to search the basement apartment at 103 Lake Drive, two detectives named Richard Sneider and Richard Grabecki maintained a surveillance of the apartment in an unmarked vehicle. As the search team began preparations to conduct the search, Chunon Bailey and an associate named Bryant Middleton exited the gated area of the apartment and got into car parked in a driveway. Both men matched the description of "Polo." It was nearly 10:00 p.m. when their car pulled away. The two detectives informed the search team that they were going to follow the vehicle and detain the two men. The search team then executed the search warrant.
A short distance from the basement apartment—approximately one mile—the detectives pulled the vehicle over "in a parking lot by a fire station." They instructed Bailey and Middleton to get out of the car after which they did a "patdown search of both men." They found a ring of keys on Bailey but no gun. Bailey told the detectives he was coming from his home at 103 Lake Drive. An examination of Bailey's driver's license revealed that he lived in Bayshore, New York—the town where the informant told the police "Polo" used to live. Middleton told the detectives that Bailey was giving him a ride home, confirming they had just left Bailey's 103 Lake Drive apartment. Both men were then handcuffed by the detectives. Bailey asked why. Detective Grabecki responded that "they were being detained incident to the execution of a search warrant at 103 Lake Drive." Bailey countered: "I don't live there. Anything you find there ain't mine, and I'm not cooperating with your investigation." It is important to emphasize that the stop and detention were only for purposes of executing the search warrant.
The detectives summoned a patrol car to take the two men back to the 103 Lake Drive apartment. Detective Sneider drove the unmarked vehicle back to the apartment while Grabecki drove Bailey's vehicle. Upon arrival back at the apartment, the detectives learned that the search team had not only discovered a gun but also drugs, both of which were lying in "plain view." Bailey and Middleton were placed under arrest. The detectives learned that one of the keys on the ring opened the door to the apartment. Bailey was charged with three federal offenses: possession of cocaine with intent to distribute, possession of a firearm by a felon, and possession of a firearm in connection with a drug trafficking offense.
At his trial, Bailey moved to suppress the apartment key and the statements made to Sneider/Grabecki after he was stopped by the detectives. The trial court denied the motion, finding that his brief detention by the detectives was proper under Summers, or, in the alternative, permissible under the "reasonable suspicion" doctrine of Terry. A jury found him guilty on three offenses and his convictions were upheld by the Second Circuit Court of Appeals under the Summers rationale without addressing the Terry issue. Bailey applied to the Supreme Court for certiorari, arguing the court should resolve a conflict among the Federal circuits about what "justifies the detention of occupants beyond the immediate vicinity of the premises covered by a search warrant." The Supreme Court agreed to resolve the conflict.
The issue before the court in Bailey was a narrow one: whether the occupant of a residence may be detained away from the premises. The court conducted its analysis under the three criteria for detention under Summers: officer safety, orderly execution of the search and flight prevention. The court elected to leave the Terry issue open for review on remand.
With respect to the safety prong, the Bailey court said: "… In the instant case Bailey had left the [premises] without knowledge of the search. He posed little risk to the officers at the scene. If Bailey had rushed back to his apartment, the police could have apprehended and detained him under Summers. There is no established principle, however, that allows the arrest of anyone away from the premises who is likely to return.
Essentially Bailey informs that while detention incident to the execution of a search warrant remains permissible, once the occupant has left the premises, his detention must be justified for some other permissible reason. Bailey was stopped at least a mile from the Lake Drive apartment; the police at that juncture did not have probable cause to stop his vehicle derived from the search of his apartment; he was ordered out of the vehicle in public view; and handcuffed and transported in a marked patrol car back to the apartment where his detention continued. Granted, it was "efficient" law enforcement to stop and detain Bailey, as the detectives did, but this efficiency was carried out in violation of the Fourth Amendment. We applaud the Supreme Court for recognizing as much. Mark a rare victory for the constitution before the nation's high court.


text:
Climbing and Outdoor News from Here and Abroad - 8/26/19
Northwest:
Smith Rock State Park
--A climber tripped while descending a trail in Smith Rock State Park and fell 100-feet. The climber did not survive. To read more, click here.
--There are two missing hikers in the Downey Creek area. This is the south end of the Ptarmigan Traverse. King 5 News is reporting that, "The Snohomish County Sheriff's Office Search and Rescue team is looking for two hikers missing at the Downey Creek Trail. David James and Marshall "Buster" Cabe left on August 16 and were expected to return on August 23, the sheriff's office said, but family members said they had not heard from the pair. They called 911 Monday to report them missing." To read more, click here. UPDATE: These guys were found. To read about it, click here.
--Here's a nice piece on how Latino Outdoors is getting kids outside. This particular article specifically talks about kids on Mt. Rainier.
A boulder being moved on a highline for
trail construction at Washington Pass.
--Several AAI guides contributed to trail construction efforts in Washington Pass last weekend. The American Mountain Guides Association and the Access Fund sponsored a work day for guides, so that they might contribute to the development of a trail that accesses all the towers in the Liberty Bell massif.
--There is another trail work opportunity with the Leavenworth Mountain Association on September 21st. They will be working on the trail up to Snow Creek Wall. To read more, click here.
Sierra:
--Bakersfield Now is reporting that, "Bad news for some hikers looking to getting away this weekend. The Bureau of Land Management posted a warning that portions of the Pacific Crest Trail have been blocked due to rockslides caused by recent seismic activity. Crews will start removing the debris starting in late September. The buried section is impassable to equestrians north of Walker Pass, where the PCT crosses State Route 178 near Lake Isabella." To read more, click here.
Desert Southwest:
--News Channel 3 is reporting that, "A hiker is recovering after falling nearly 30 feet while climbing "Lily Rock" in Humber Park near Idyllwild. This happened just after 3 o'clock Saturday afternoon." To read more, click here.
--There was a meeting this week and a public forum that concerned the expansion of the mobile network on Highway 159 outside Red Rock Canyon National Conservation Area. To read more, click here.
--KTLA 5 is reporting that, "an anonymous donor has given more than $30,000 to fund a reward for information that leads to whoever has killed more than 40 protected wild burros in the Southern California desert." To read more, click here.
--The campground in Red Rock Canyon will reopen tomorrow, Friday, August 30. To read more, click here.
Colorado and Utah:
--HuffPost is reporting that, "A Colorado man survived a bear attack Monday thanks to his wife and her Louisville Slugger. Jon Johnson and George Ann Field were watching TV at their home in Pine when Johnson heard noises coming from upstairs. He walked into the kitchen and found himself face-to-face with a mother bear and one of her cubs eating a loaf of bread." To read more, click here.
--There was a massive rockfall event in Zion National Park this week, when a massive piece of rock broke loose from Cable Mountain. Three people were injured in the incident, and one was taken to the hospital. To read more, click here. To see a video of the event, click below.
--A climber is lucky to be alive after being struck by lightning. Rock and Ice is reporting that, "Around 3:00 p.m. on August 17, longtime climber Minko Nikolov, 31, was struck by lightning while hiking in Rocky Mountain National Park between Lower and Emerald Lake. His smoking body was discovered by hikers and he was quickly airlifted to a hospital in Loveland, Colorado." To read more, click here.
--Snews is reporting that, "Doug Stenclik, co-founder of Colorado retail shop Cripple Creek Backcountry, recently purchased WildSnow, the blog dedicated to the niche sport of ski touring and splitboarding." To read more, click here.
--Increased recreation may be having a detrimental impact on the elk population near Vail. From the Guardian: "Trail use near Vail, Colorado, has more than doubled since 2009. It's had a devastating impact on a herd of elk. Increasing numbers of outdoor recreationists – everything from hikers, mountain bikers and backcountry skiers to Jeep, all-terrain vehicle and motorcycle riders, aren't good for Elk populations. Biologists used to count over 1,000 head of elk from the air near Vail, Colorado. The majestic brown animals, a symbol of the American west, dotted hundreds of square miles of slopes and valleys." To read more, click here.
--The BLM may be trying to find a way to sell off public lands. To read more, click here.
--Rocky Mountain National Park is considering a change in camping fees. To read more, click here.
Notes from All Over:
--The Jackson Hole News and Guide is reporting that, "A 20-year-old French Canadian man was climbing by himself in Grand Teton National Park on Sunday morning when he fell 50 feet. Although Maxime Blondel was injured, he was able to pull out his cell phone and call for help." To read more, click here.
--The issues in Wyoming's Ten Sleep Canyon have come to a head with the National Forest Service closing the area to all future development. The problem that lead to this was twofold. First, people chipped holds in the process of their route development. Second, a group of climbers stripped all these routes with manufactured holds of all their bolts. The combination of these things was too much for the Forest Service. To read more, check out this great piece on the controversy from Climbing.
--The Burlington Free Press is reporting on significant overuse issues in the Adirondacks. "Hikers packed the lots at popular trail heads up and down New York State Route 73 before sunrise on an early August weekend, partly thanks to a roadside parking ban enacted in the spring amid safety concerns. The scene was indicative of a growing problem in the Adirondacks. A sweeping management plan created by the state Department of Environmental Conservation two decades ago might have headed off parking woes, but locals say little of the plan was ever implemented, nor were other measures that could have helped mitigate overcrowding at one of the Northeast's most popular hiking destinations." To read more, click here.
--India has opened up several new peaks. From the Economic Times: "The ministry of home affairs (MHA) has opened up 137 peaks located in Jammu & Kashmir, Himachal Pradesh, Uttarakhand and Sikkim to foreigners ''desirous'' of obtaining a mountaineering visa for climbing and trekking purposes. MHA said the proposal to open more mountain peaks for mountaineering and trekking in all the Himalayan states was under consideration of the government." To read more, click here.
Navigating the Khumbu Icefall on Mt. Everest
Photo: Guy Cotter
--Alan Arnette has published a deep dive into the new rules on Mt. Everest in Nepal. And he notes that some of them don't make any sense at all. To read the blog, click here.
--And in other Everest News, Nepal will be banning single use plastics in the Everest region. To read more, click here.
--SnowBrains has compiled a list of the ten best small ski resorts in America. Check it out, here.
--Rock and Ice is conducting a survey on alcohol and drug use around climbing. To participate, click here.
Rocky Mountain National Park Proposes Changes in C...
Falling on Lead and "Cratering"
Climbing and Outdoor News from Here and Abroad -
A Guide to Backcountry Coffee
The Master Carabiner
Where the Wild Things Keep Playing

redpajama_set_name: RedPajamaCommonCrawl


Brussels, 9 November 2010 - The European Commission today laid out its blueprint for an EU trade policy to help revitalise Europe's economy. In its discussion paper "Trade, Growth and World Affairs", the Commission analyses how trade is an engine for economic growth and job creation. It proposes a strategy to reduce trade barriers, to open global markets and to get a fair deal for European businesses. The overarching aim is to take a more assertive approach to ensure the benefits of trade reach European citizens.
"Trade is working for Europe's economic recovery by ensuring growth and jobs", said EU Trade Commissioner Karel De Gucht. "A renewed trade strategy will open markets and connect Europe to the main sources and regions of global growth. My aim is to ensure that European business gets a fair deal and that our rights are respected so that all of us can enjoy the benefits of trade."
The paper sets out the triple benefit of trade for Europe: stronger economic growth, more jobs and increased consumer choice at lower prices.
6. to ensure trade remains inclusive so that the benefits go to the many, not the few. We will spell out how trade can continue to support development as we set up a new framework of rules for trade preferences for developing countries.
These priorities mirror the concerns of people across the EU. A Eurobarometer survey on international trade, also released today, shows that two thirds of European citizens feel that the EU has benefited from international trade. A majority is confident that European products and services can compete successfully in the global market.
The discussion paper is accompanied by two more documents. A report on "Progress achieved on the Global Europe strategy 2006-2010" reviews progress made over the last five years in achieving further trade opening between the EU and its trading partners. A working paper "Trade as a driver of prosperity" shows the contribution that sustainable, smart and inclusive trade can make to growth and job creation, and examines the most important remaining barriers to trade in goods, services and investment.
A public consultation on EU trade policy helped to identify the priorities of a wide group of stakeholders and delivered important contributions to the Commission's new strategy.
The Eurobarometer survey was conducted by interviews with 26,635 EU citizens in the 27 EU States between 26th August and 16th September 2010.
For the Communication "Trade, Growth and World Affairs" and accompanying Staff Working Papers "Trade as a Driver of Prosperity" and " Progress achieved on the Global Europe strategy 2006-2010"


Owner Newsletter: $79 Exchanges, Peek at Disney's® new park, and more for May!
We're making May even more special with exchange fees off these amazing destinations. Treat yourself or celebrate with the ones you love with this epic vacation sale!
Offer expires: May 18, 2018. Call us to book!
Blackout dates: June 29, 2018 – July 06, 2018, November 16, 2018 – November 24, 2018 and December 21, 2018 – January 04, 2019 at the Westgate Palace Resort in Orlando, FL; May 25, 2018 – May 27, 2018, June 01, 2018 – August 09, 2018, November 17, 2018 – November 23, 2018, December 21, 2018 – December 31, 2018 at the Westgate Blue Tree Resort and Westgate Leisure Resort in Orlando, FL. May 03, 2018 – May 05, 2018, May 18, 2018 – May 20, 2018, May 26, 2018 – May 27, 2018, June 04, 2018 – June 07, 2018, June 15, 2018 – June 16, 2018, June 22, 2018 – June 23, 2018, July 13, 2018 – July 14, 2018, July 18, 2018 – July 20, 2018, July 28, 2018 – July 30, 2018, August 11, 2018 – August 14, 2018, September 14, 2018 – September 16, 2018, September 23, 2018 – September 25, 2018, October 07, 2018 – October 18, 2018 and October 30, 2018 – November 02, 2018, November 13, 2018 – November 16, 2018, December 30, 2018 – December 31, 2018, January 07, 2019 - January 10, 2019, January 22, 2019 – January 24, 2019, February 02, 2019 – February 03, 2019, February 15, 2019 – February 19, 2019, March 01, 2019 – March 03, 2019, March 14, 2019 – March 16, 2019, March 21, 2019 – March 23, 2019 and April 07, 2019 – April 10, 2019 at the Westgate Las Vegas Resort and Casino in Las Vegas, NV.
Offer rates are subject to change without notice. Offer rates do not include taxes and/or fees. Blackout Dates may apply and are defined by Westgate in its sole and absolute discretion. Reservations are first-come, first served and based on double occupancy availability. Any and all changes to reservation after expiration date of offer will result in a forfeiture of the promotional offer. A no-show will result in a 100% penalty. Westgate reserves the right to cancel any duplicate and/or conflicting reservation without notice to end user. End user is responsible for any and all taxes, fees, and/or other government and/or airport-imposed charges. Offer is subject to availability and inventory. End user is responsible for any and all outstanding charges and fees incurred before, during, or after their stay, including but not limited to gratuities, meals, and/or transportation costs. This offer is void where prohibited by law. Average retail value is $159 USD based on travel season. All federal, state, and local laws and regulations apply.
This offer cannot be transferred, exchanged for cash and/or monetary consideration. This offer may not be used in conjunction with any other offer, promotion, and/or certificate. This offer shall be governed by and interpreted in accordance with the laws of the State of Florida, without regard to principles of conflicts of law. Venue for any action arising hereunder shall exclusively lie in Orange County, Florida. By accepting this Offer, the end user agrees that Westgate will not be held liable for any actual or potential losses, including without limitations, compensation or consequential damages, either in contract or in tort, by either person or property, arising out of this Offer or in connection therewith or by misrepresentation by a third party. Westgate is not to be held responsible for any act of God, acts of terrorism, and/or any other circumstances beyond its control. Westgate reserves the right to change these terms and conditions without notice. These terms and conditions are final and cannot be changed or altered by any statement, merchant, or representative of any unauthorized person(s). No other representations, oral or otherwise, are valid in conjunction with this Offer.
Some of Westgate's destinations are pet friendly. To find out if a specific resort allows pets, please ask your reservationist, or call 1-888-808-7410. Westgate's guests who take advantage of the pet policy will be subject to an additional non-refundable and/or refundable deposit in an amount at the discretion of each resort. Registered service animals are not subject to Westgate's pet policy and are not subject to any security deposit. Guests are responsible for the behavior of their pet and for all personal injuries and/or property damage related to their pet. Westgate, its employees and its respective affiliates are indemnified and held harmless from any and all liability and/or damage suffered as a result of their pets.
Maximum Occupancy: Due to safety and fire code regulations, there is a maximum occupancy limit set for every room at any of our Resort locations. This occupancy number limit is based on state and federal regulations regarding the size and space of each room. Every person, regardless of age, is considered as one (1) person and is counted toward the maximum occupancy limit of persons for that room and location.
THIS ADVERTISING MATERIAL IS BEING USED FOR SOLICITING SALES OF TIMESHARE INTERESTS OR PLANS.


text:
← Toronto's Footballing Folk Heroes?
Best of the Prem 2014: Arsenal to Crystal Palace →
by At The Rails | January 14, 2014 · 11:09 pm
With roster rebuilt, TFC's attention must turn to stadium expansion
Early on in Monday's splashy unveiling of high-priced talent for long-suffering Toronto FC, Tim Leiweke described his outlay of $100 million dollars on three designated players as "financial suicide."
And here's why, in the words of the refreshingly frank and delightfully bold MLSE head honcho himself: "We don't have enough seats to make economic sense out of this."
Toronto's DP slots have been filled to overflowing. Next on the agenda is the expansion of BMO Field. An announcement on the matter, possibly a funding agreement with government blessing, can be expected "in the very near future," Leiweke said Monday.
Like the influx of new stars, it won't come cheap. Not that MLSE can't afford it, mind you. But they're looking at dropping another $100 million at least, or maybe as much as double BMO's original $63 million price tag, to breathe new life into a bare bones facility that still isn't even a decade old.
"If we have one of the top teams in the league, we have to have one of the top stadiums in the league, so we're committed to working with the city and trying to find a vision that significantly enhances the stadium," Leiweke told a media scrum Monday, moments after taking the wraps off striker Jermain Defoe and midfielder Michael Bradley
Updated digs will add an anticipated 8,000 seats to TFC's lakeside home, probably with an upper deck stacked on top of the current east stand and further changes behind one or both goals. Leiweke's typically grandiose plans include visions of Grey Cup games and NHL Winter Classics at BMO, with temporary seating boosting capacity as high as 40,000 for one-off events.
The fan experience will be improved with modern touches like WiFi routers and HD televisions, similar to those at Kansas City's soccer playpen. There's also likely to be some kind of roof, given that Leiweke has promised to give the place more of a "European flavour." And while, strictly from an aesthetic standpoint, that'll probably ruin one of the prettiest stadium views on the continent, it's also the inevitable price of progress in the march towards a bigger and better future.
The other, somewhat more ominous expectation is that any renovation to BMO will make sure it can also accommodate the 150-yard field required by the Toronto Argonauts, whose time under the roof of Rogers Centre is running short. Amid debate over retractable seat technology to handle the CFL's expansive end zones and yard-line markings that can be washed away between uses, the more troubling matter here is the heavy toll the gridiron game is likely to take on the immaculate natural surface preferred for soccer. Leiweke insists scheduling can be handled so the grass always gets a week off for repair, but alarm bells are ringing nevertheless.
As a goodwill gesture to fans, TFC has frozen ticket prices for the coming season, hoping to reverse a slide that saw attendance fall to just over 18,000 last year. But win or lose with the raft of new additions, there can be little doubt that it will soon take more green to watch the Reds play. And despite the lofty price tag, Leiweke is convinced his costly endeavour will soon bear fruit for MLSE.
"We're going to be the first $50-million gross-revenue club in the history of soccer in North America, going all the way back to the [NASL's New York] Cosmos," he pledged Monday. His track record suggests he's the type of man to make that happen, someone whose ideas aren't likely to wither and die in focus group sessions with fans or design discussions with architects.
The roster has been rebuilt, but that's only the beginning. More change is coming at TFC. Expect a bigger, better home field, and a CFL tenant, by the time the dust settles.
Ian Harrison
Filed under MLS
Tagged as jermain defoe, michael bradley, mls, mlse, tfc, tim leiweke, toronto fc


text:
@import cxx_templates_a;
@import cxx_templates_b;

template<typename, char> struct Tmpl_T_C {};
template<typename, int, int> struct Tmpl_T_I_I {};

template<typename A, typename B, A> struct Tmpl_T_T_A {};
template<typename A, typename B, B> struct Tmpl_T_T_B {};

void g() {
  f(0);
  f<double>(1.0);
  f<int>();
  f(); // expected-error {{no matching function}}
  // expected-note@Inputs/cxx-templates-b.h:3 {{couldn't infer template argument}}
  // expected-note@Inputs/cxx-templates-b.h:4 {{requires single argument}}

  N::f(0);
  N::f<double>(1.0);
  N::f<int>();
  N::f(); // expected-error {{no matching function}}
  // expected-note@Inputs/cxx-templates-b.h:6 {{couldn't infer template argument}}
  // expected-note@Inputs/cxx-templates-b.h:7 {{requires single argument 't'}}

  template_param_kinds_1<0>(); // ok, from cxx-templates-a.h
  template_param_kinds_1<int>(); // ok, from cxx-templates-b.h

  template_param_kinds_2<Tmpl_T_C>(); // expected-error {{no matching function}}
  // expected-note@Inputs/cxx-templates-a.h:11 {{invalid explicitly-specified argument}}
  // expected-note@Inputs/cxx-templates-b.h:11 {{invalid explicitly-specified argument}}

  template_param_kinds_2<Tmpl_T_I_I>(); // expected-error {{ambiguous}}
  // expected-note@Inputs/cxx-templates-a.h:11 {{candidate}}
  // expected-note@Inputs/cxx-templates-b.h:11 {{candidate}}

  // FIXME: This should be valid, but we incorrectly match the template template
  // argument against both template template parameters.
  template_param_kinds_3<Tmpl_T_T_A>(); // expected-error {{ambiguous}}
  // expected-note@Inputs/cxx-templates-a.h:12 {{candidate}}
  // expected-note@Inputs/cxx-templates-b.h:12 {{candidate}}
  template_param_kinds_3<Tmpl_T_T_B>(); // expected-error {{ambiguous}}
  // expected-note@Inputs/cxx-templates-a.h:12 {{candidate}}
  // expected-note@Inputs/cxx-templates-b.h:12 {{candidate}}

  // Trigger the instantiation of a template in 'a' that uses a type defined in
  // 'common'. That type is not visible here.
  PerformDelayedLookup(defined_in_common);

  // Likewise, but via a default argument.
  PerformDelayedLookupInDefaultArgument(defined_in_common);

  // Trigger the instantiation of a template in 'b' that uses a type defined in
  // 'b_impl'. That type is not visible here.
  UseDefinedInBImpl<int>();

  // Trigger the instantiation of a template in 'a' that uses a type defined in
  // 'b_impl', via a template defined in 'b'. Since the type is visible from
  // within 'b', the instantiation succeeds.
  UseDefinedInBImplIndirectly(defined_in_b_impl);

  // Trigger the instantiation of a template in 'a' that uses a type defined in
  // 'b_impl'. That type is not visible here, nor in 'a'. This fails; there is
  // no reason why DefinedInBImpl should be visible here.
  // expected-error@Inputs/cxx-templates-a.h:19 {{definition of 'DefinedInBImpl' must be imported}}
  // expected-note@Inputs/cxx-templates-b-impl.h:1 {{definition is here}}
  PerformDelayedLookup(defined_in_b_impl); // expected-note {{in instantiation of}}
}

RedeclaredAsFriend<int> raf1;
RedeclareTemplateAsFriend<double> rtaf;
RedeclaredAsFriend<double> raf2;

@import cxx_templates_common;

typedef SomeTemplate<int*> SomeTemplateIntPtr;
typedef SomeTemplate<int&> SomeTemplateIntRef;
SomeTemplate<char*> some_template_char_ptr;
SomeTemplate<char&> some_template_char_ref;

// FIXME: There should only be two 'f's here.
// CHECK-GLOBAL:      DeclarationName 'f'
// CHECK-GLOBAL-NEXT: |-FunctionTemplate {{.*}} 'f'
// CHECK-GLOBAL-NEXT: |-FunctionTemplate {{.*}} 'f'
// CHECK-GLOBAL-NEXT: |-FunctionTemplate {{.*}} 'f'
// CHECK-GLOBAL-NEXT: `-FunctionTemplate {{.*}} 'f'

// CHECK-NAMESPACE-N:      DeclarationName 'f'
// CHECK-NAMESPACE-N-NEXT: |-FunctionTemplate {{.*}} 'f'
// CHECK-NAMESPACE-N-NEXT: `-FunctionTemplate {{.*}} 'f'


May 2016 amber/16-16.05 boost/1.60.0 cube/4.3.4 gflags/2.1.2 glog/0.3.4 hdf5/1.10.0 intel-advisor/2016.1.30.450722 intel-advisor/2016.1.40.463413 intel-cc/16.0.3.210 intel-fc/16.0.3.210 intel-inspector/2016.1.2.450824 intel-inspector/2016.1.3.460803 intel-ipp/16.0.3.210 intel-mkl/16.0.3.210 intel-mpi/5.1.3.210 intel-tbb/16.0.3.210 intel-vtune/2016.2.0.444464 intel-vtune/2016.3.0.463186 leveldb/1.18 lmdb/0.9.18 lsdyna/R7.0.0 opari2/2.0 openmpi/cuda/7.5/1.10.2 openmpi/cuda/7.5/1.10.2-debug openmpi/cuda/7.5/1.10.2-mt openmpi/cuda/7.5/1.10.2-mt-debug otf2/2.0 protobuf/2.6.1 scalasca/2.3 scorep/2.0.1 snappy/1.1.3 tensorflow/0.8 module avail on Raijin to see more information.
NCI's User Services team have installed a range of new software on Raijin this month. ansys/17.0 llvm/3.6.2 plumed/2.2.1 openmpi/1.10.0 perl/5.22.1 gromacs/5.1.2 gromacs/5.1.2-plumed biopython/1.66 scalasca/2.2.2 namd/2.11 valgrind/3.11.0 module avail on Raijin to see more applications.
The training course 'Introduction to NCI' will be run for GA staff at Geoscience Australia on Thursday 20th February 9am – 4.30pm.
The training course 'Parallel Programming at NCI' will run for GA staff at Geoscience Australia on Tuesday 19th March, 9am – 4.30pm.
VIDEO: Watch Dr Joseph Antony present 'Luster at NCI' at the LAD'13 Lustre Developer Conference in Paris. Click to watch.


text:
Temple Beth Avodah
Environments at Work (EAW) was proud to help Temple Beth Avodah (TBA), a progressive Reform synagogue in Newton, MA, create a welcoming space to spark and foster meaningful connections for the congregant's members.
By selecting furnishings with a warm, residential feel, EAW surpassed TBA's vision of the space to feel like a second home for its congregants – a place where everyone is always welcome. The congregation consists of approximately 425 families engaged in Jewish life and learning across diverse ages and stages.
The project included a 1200 SF addition to the rear of the existing structure in order to create a new multipurpose space to meet the current and future programming needs of the congregation. In addition, renovations were made to the existing sanctuary, social hall, multipurpose room, board room, and main entry lobby.
Overall, the goals were to enhance the appearance and maximize the functionality of spaces within the Temple. Additionally, imparting a warm, welcoming feel that reflects the personalities of its staff and congregants was paramount. This was achieved by creating a light interior and a strong visual connection between the exterior and interior settings.
Bechtel Frank Erickson
Bowdoin Construction
Greg Premru


The Ducati Factory squad in World Superbikes will have been laughing all the way back across the Atlantic and to Bologna after Chaz Davies destroyed the field at round 9 of the 2015 series from Laguna Seca last weekend, storming to an inaugural double victory for the Italian manufacturer's Panigale machine; ending Team Green riders Jonathan Rea and Tom Sykes' streak of victories.
Davies showed he was the man to beat all weekend, clinching an impressive pole position in Superpole on Saturday afternoon by nearly two tenths ahead of team mate Davide Giugliano. In such confident style, the Welshman flew off the line, building up to over a second's lead by the end of the first couple of laps by which time it was game-set-match to the former World Supersport champion.
The battle behind him for silver trophy honours was between Kawasaki team mates Tom Sykes and Jonathan Rea, with Sykes coming out on top after a race long battle. Behind them Davide Giugliano and Jordi Torres rolled over the line with Alex Lowes not too far down the road in 6th, his best result of the season. His compatriot Leon Haslam fell off while battling for 5th with team mate Torres, while his replacement at Pata Honda, Sylvain Guintoli brought his CBR1000RR home in 7th ahead of team mate Michael van der Mark.
Much the same as race one, aside from where Haslam managed to stay on his machine, battling with Torres once more, losing out to come home across the line in 5th. Davide Giugliano had a violent change of fortunes for the second outing, battling for lower podium honours while his team mate checked in his bags at San Francisco airport, he managed to high side himself out of the race and into a tumbling dizzy state following a spouting of rain shortly after the lights went out. Sylvain Guintoli also fell on the same lap in an apparent collision with Alex Lowes who suffered a punctured front tyre and was pulling into the pits.
Davies brought home another 1st place trophy ahead of Sykes, Rea, Torres, Haslam, Badovini, van der Mark, Canepa, Mercado and Leon Camier in 10th.
Results for Race One can be found here and Race Two here.
Round 10 – Sepang, Malaysia – 31 July – 2nd August 2015.
Sadly, the WSBK Laguna Seca weekend also came with some horrendous news from the MotoAmerica (formerly AMA) series accompanying the World championship as a support series. Following the start of the second MotoAmerica SBK/STK1000 race, a 5 rider pile up going into the first turn took the lives of both Dani Rivas and Bernat Martinez. Both were experienced riders hailing from Spain, with Rivas a regular in the CEV scene and a former Moto2 rider. We extend our deepest sympathies to the families and friends of both Rivas and Martinez. Godspeed, chaps.
Next Next post: MotoGP Summer break: What have we missed?


Task: Litter-picking along the footpath.
Join Friends of the Don Valley Way for a clean up of Swinton Dike and general litter pick of the surrounding area.
Equipment provided but please wear suitable clothing and footwear.
If you would like to borrow some waders, please let us know before the event.
The GREAT Sheffield RIVER clean-up!
If you have been inspired by ShAFF's Paddle for the Planet screening on Friday 22nd March, why not join the Riverlution for real? Take part in your own real-life activism adventure at the Great Sheffield River Clean-up !
As part of Riverlution Re-Connected, River Stewardship Company will be hosting a joint river clean-up with Don Catchment Rivers Trust between 10am and 3pm on Saturday 23rd March. Join them to take vital action to improve the health of the River Don and protect Sheffield against future flooding. They will be working on the stretch of the river between Ball Street Bridge and the Gardener's rest on Kelham Island and they need Sheffield's active and adventurous community to help out!
There will be a choice of activities: young children can help make a bug hotel, there will be litter picking galore, and if you fancy working up a sweat you can help fish out the odd car bumper, or join the pruning squad. You can join in for as long as you like between screenings at the Showroom.
On the day, please register at the Great Sheffield River Clean-up basecamp outside Kelham Island Kitchen. All the protective gear you need will be provided but please bring warm clothes and wear sturdy footwear!
This year we are working in partnership with ASDA through there Purge on Plastic campaign. We will be meeting Aldwarke Ln, Rawmarsh, Rotherham S65 3SW in the ASDA car park. We are meeting at 10:00am and will be finishing at 1:00pm. Refreshments will be provided during the day and equipment will also be provided. Please wear suitable clothing and footwear for outside work. Wellies can be provided if you contact us before the day.


I need my website re-configured.I need you to design my blog.
my exact problem is - My Blog's Width. My Blog is on WordPress and Not show full layout width in desktop version. I have many premium WordPress themes, like - Newspaper, Bimber, Avada and Publisher etc. But in All themes, problem is same. why this..? I will try for solve this issue, but I'm not actually know about how to fix it.
so anybody .php or WordPress expert here, who fix this blog width issue surely, then apply now. i will pay you, if you solve this issue correctly and permanently.
I can complete the project within 1 hr and within a very less budget. .
I can fix blog width error in your website as per your requirement. I have two years of web development experience. I can do it ASAP.


"Safety is not expensive, it's priceless" --- "If your dog does not like someone, you probably shouldn't either."
"Corado Z Vetrovel Luky" "RUSH"
Rush is now back home from his European breeding assignment and is now enjoying retirement.
He has produced a significant number of pups for the Slovak National Police as well as many other breedings to date..
In fact we just imported a couple his pups and they are great.
Slovak National TV did a report/interview with Rush's handler about him and his genetics. We are trying to get permission to download and put subtitles onto this clip.
We do have a limited number of frozen breeding units available.


text:
Q: Seaborn pairplot warning not understandable I give a small example to make the question clearer:
import pandas as pd
import seaborn as sns

df = pd.DataFrame(
         [
             [28, 72, 12],
             [28, 17, 25],
             [54, 15, 45],
             [30, 57, 28]
         ],
         columns = ["x", "y", "z"]
    )
cols = list(df.columns)
sns.pairplot(df)

The warning generated is as follows:
C:\Users\thaly\anaconda3\lib\site-packages\seaborn\axisgrid.py:1444:
MatplotlibDeprecationWarning: The join function was deprecated in Matplotlib 3.6
and will be removed two minor releases later.
  group.join(ax, diag_axes[0])

I totally don't understand the information given : group.join(ax, diag_axes[0])...
What do you think I should write instead of my simple line : sns.pairplot(df) ? (from which apparently comes the problem)

A: As mentioned in the comments, this warning is triggered in an interaction between seaborn and matplotlib and isn't caused (or avoidable) by any user action.
Furthermore, the seaborn v0.12.0 release includes updated code that does not  trigger this warning.

redpajama_set_name: RedPajamaStackExchange


Raised storage areas let you utilise the available height of your building to substantially increase your floor space.
Raised storage areas let you utilise the available height of your building to substantially increase your floor space. Raised storage areas can be constructed from pallet racking, long span racking & Regal 3000 rackingshelving or engineered steel structures which span greater distances & provide greater load bearing capacities. Timber, steel or open grate flooring materials are available; simply contact our team at Absolute Storage Systems to find out which solution will best suit your business.
Note: Some local authorities may require planning permits.
Want to discuss Raised Storage Areas?


text:
Where Science Meets Science Fiction
Science Fiction Sci-Fi
Science of Sci-Fi
©2015 - 2020 OUTER PLACES.
NASA Says Jupiter's Moon Europa Is Shooting Liquid Water From Underground Oceans Into Space
Chris Mahon
Monday, 14 May 2018 - 12:29PM
NASA Goddard
Recent data from the NASA Galileo mission to Jupiter's moon Europa may have just made the biggest scientific breakthrough in years. Evidence from Galileo, backed by years of observations from the Hubble Telescope, suggests that Europa has been shooting geysers of liquid water into its atmosphere for decades.
This is exciting for two reasons. First, it lends credence to the theory that Europa has an ocean of liquid water buried under its icy shell. Second, it means that if NASA's mission to Europa in 2028 goes ahead as planned, we can fly a probe through a geyser and get a sample of what the moon's ocean is like without having to land on its surface. In fact, Galileo probably already did the latter back in 1997, but no one realized what had happened. Unfortunately for us, Galileo also didn't have the equipment to look for signs of life.
That's probably going to change in the next mission, however. Europa has long been considered one of the best potential candidates for extraterrestrial life in our own solar system – partly because it's subterranean ocean is thought to have direct contact with the moon's core, which might create an engine for chemical reactions that lead to the development of life.
You may rightly wonder how NASA scientists missed these water plumes in 1997, but the truth is that they didn't – Margaret Kivelson, the original principal investigator of Galileo's magnetometer results (which were used in the recent study), had already tried to argue that there was an ocean of liquid water beneath Europa's icy exterior, but had been shot down. According to her: "To go from there to also there are geysers coming up from that ocean, we just weren't ready for that."
What's funny is that this isn't the first time overlooked data from Galileo has been used to make a breakthrough. Earlier this month, astronomers resurrected old data from the Galileo mission to shed light on Ganymede, a uniquely magnetic natural satellite orbiting Jupiter. Who knows what else NASA's missed?
We can't wait to find out.
Get Our Newsletter.
Our Biggest Stories, Delivered to Your Inbox.
This Star Holds the Key to New Research Unlocking Exact Date the Milky Way Devoured Dwarf Galaxy Gaia-Enceladus
Chicago Field Museum Scientists Find 'Presolar Grains' of Stardust in Australian Meteorite – It's Now the Oldest Solid Matter Ever Discovered
Release the Kraken! Scientists Finally Sequence Giant Squid Genome
'Closest Multi-Planetary System To Us' – Light Signals Observed From Potential Super-Earth Just 4 Light-Years Away
Enigmatic Radio Burst Illuminates a Galaxy's Tranquil Halo
Second Interstellar Object Ever Discovered is Traveling at 100 Times the Speed of Sound
NASA Discovers Three New Exoplanets Orbiting a Dwarf Star: Could There be Life on Their 'Dark Sides?'
Scientists Publish First-Ever Direct Imaging of Two Young Exoplanets Cutting a Path Through the Protoplanetary Disc Surrounding a Newborn Star
Star Wars DC Comics Space Marvel Technology Astronomy Robotics
"Unraveling:" Something Weird is Happening to Jupiter's Great Red Spot as New Observations Could Spell the End of an Era
Scientists Use Asteroid to Measure Smallest Star Size to Date
Stay up to date, get the Outer Places Newsletter:
The Intervenusian Asteroid '2020 AV2' Is the First of Its Kind – And Now the Second-Closest Object to the Sun
'Strange Metals' – Scientists Observe Quantum Entanglement In 'Billions of Billions' of Ytterbium Electrons
I, Xenobot: DARPA-Sponsored Scientists Use Frog Stem Cells to Develop Self-Healing 'Living Machines'
©2015 - 2020 Outer Places. All Rights Reserved.
'; // } verticalFit: true, // Fits image in area vertically tError: 'The image could not be loaded.' // Error message } }); }


We are located in the Santa Cruz Mountains of Santa Cruz County. Monterey is to the south, San Jose and San Francisco are to the north.
Park facing towards Coast Redwood High School. Varsity baseball field will be on the left and the tennis courts on the right.