Alice guesses the strings that Bob made for her.

At first, Bob came up with the secret string $$$a$$$ consisting of lowercase English letters. The string $$$a$$$ has a length of $$$2$$$ or more characters. Then, from string $$$a$$$ he builds a new string $$$b$$$ and offers Alice the string $$$b$$$ so that she can guess the string $$$a$$$.

Bob builds $$$b$$$ from $$$a$$$ as follows: he writes all the substrings of length $$$2$$$ of the string $$$a$$$ in the order from left to right, and then joins them in the same order into the string $$$b$$$.

For example, if Bob came up with the string $$$a$$$="abac", then all the substrings of length $$$2$$$ of the string $$$a$$$ are: "ab", "ba", "ac". Therefore, the string $$$b$$$="abbaac".

You are given the string $$$b$$$. Help Alice to guess the string $$$a$$$ that Bob came up with. It is guaranteed that $$$b$$$ was built according to the algorithm given above. It can be proved that the answer to the problem is unique.


G’day! I’m Adam, a doctoral student in machine learning at Université Laval in Québec, Canada. I’m passionate about fundamental research and practical applications in artificial intelligence and machine learning. My current research is focused on semi‐supervised learning, with a particular focus on image analysis for non‐natural imaging domains, such a smedicalimages, under the supervision of Christian Gagné. I’m a member of the Institut intelligence et données (IID) and Mila.
Prior to coming to ULaval, I worked as a machine learning engineer for LHP Partners Ltd, a Wellington-based AI consultancy start-up. I received my M.Sc. degree from the University of Canterbuy (UC) in computer science. My thesis was written on evolutionary reinforcement learning for vision-based general video game playing, under the supervision of Kourosh Neshatian. I also receieved my B.Sc. from UC in computer science and statistics. Addtionally, I have interned at various different companys, such as Xero and Orion Health.
From here, you can learn more about me, or checkout my recent projects and publications!


Presence of one or multiple disembodied, floating penis(es).
For it to be a true magic penis, it can't just be that the body is out of view. It has to either fade to nothingness at the base or be otherwise clearly detached.
The following tags are aliased to this tag:
This tag implicates


New answers tagged autocomplete
Google incorporates all of the following criteria (among others) into their autocomplete functionality: Searches you've done in the past Google+ Profiles Searches done by other users on the web (and popularity of those searches) Spell Checking Suggestions Locale https://support.google.com/websearch/answer/106230
I can't be completely sure of that, but on Google, the autocompletion must be a mix of the relevance (personalized results) and of the popularity, of course I think that the more they know you, the more It will be based on relevance. I think that it might be about the same thing on the other search engines. And I haven't any documentation, all that I tell ...
Top 50 recent answers are included


Quickly enable or disable checks for an application. Manage incidents so that users can see any events or maintenance windows scheduled.
Transparency and communication is important with your users. Giving them a portal to see your applications' keeps them informed.
Create a Site and a Health Check in under 60 seconds. Once health checks are created, that's all you have to do to have your site monitored.
Receive email notifications on a configurable interval. Notifications will be sent whenever a health check has failed. Add multiple emails to a single site.
Already get too many emails? Receive Slack noitifications on a configurable interval. Notifications will be sent whenever a health check has failed.
SSL Certificates can last for years. Simple notifications of SSL Certificates expiring or if your site is using a bad certificate.
Status Pages gives your customers visibility to the health of your application. Use your own domain and logo for a peronalized touch.
Communication is important and Incident Management gives customers realtime updates to incidents or maintenance windows.


/*
 *
 * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
 * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
 * Product and Trade Secret source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2013 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
 *
 */

#ifndef HK_UTILITIES2_SOFT_CONTACT_UTIL
#define HK_UTILITIES2_SOFT_CONTACT_UTIL

#include <Physics2012/Dynamics/Collide/ContactListener/hkpContactListener.h>

#include <Physics2012/Dynamics/Entity/hkpEntity.h>
#include <Physics2012/Dynamics/Entity/hkpEntityListener.h>

class hkpRigidBody;

	/// A listener class used to soften collisions.
	///
	/// The utility scales the forces applied between bodies during collision resolution. This results in softened collisions and contact.
	/// Note that this utility should not be used for pairs of bodies between which continuous collision detection and response is performed,
	/// as this might significantly impact simulations performance.
	/// This feature is currently beta - use it with care.
class hkpSoftContactUtil: public hkReferencedObject, private hkpContactListener, private hkpEntityListener
{
	public:
		HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_UTILITIES);

			/// Adds the soft contact util as a listener to bodyA.
			///
			/// If a contact point is added between bodyA and bodyB, the forces applied between the bodies are changed.
			/// This may be used to achieve soft contacts.
			/// If bodyB is set to NULL, than bodyA will get soft contacts with all bodies
		hkpSoftContactUtil( hkpRigidBody* bodyA, hkpRigidBody* optionalBodyB, hkReal forceScale, hkReal maxAccel );

		~hkpSoftContactUtil();

	protected:

		void contactPointCallback( const hkpContactPointEvent& event );

		void entityDeletedCallback( hkpEntity* entity );

		//
		//	Internal public section
		//
	protected:
		hkpRigidBody* m_bodyA;
		hkpRigidBody* m_bodyB;

	public:
		hkReal m_forceScale;
		hkReal m_maxAcceleration;
};

#endif		// HK_UTILITIES2_SOFT_CONTACT_UTIL

/*
 * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20130718)
 *
 * Confidential Information of Havok.  (C) Copyright 1999-2013
 * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
 * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
 * rights, and intellectual property rights in the Havok software remain in
 * Havok and/or its suppliers.
 *
 * Use of this software for evaluation purposes is subject to and indicates
 * acceptance of the End User licence Agreement for this product. A copy of
 * the license is included with this software and is also available at www.havok.com/tryhavok.
 *
 */


[NTG-context] Consistent random number generation
adityam at umich.edu
Tue Apr 5 23:43:53 CEST 2016
Is it possible to generate consistent random numbers across multiple
operating systems. For example, consider the following file:
If I process this using texlua, the output on linux and MacOS is
different. Is it possible to get consistent output?
Rationate: I use randomization to randomize certain paths in metapost. Not
all randomly generated paths look okay, so I play around with the seed
until I get a good path. But I have to repeat this process everytime I
update my distribution and if I compile on different machines.
More information about the ntg-context


//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "AiCommonConfig.h"

@interface AudioParams : AiCommonConfig
{
}

- (id)getCompress;
- (int)setCompress:(id)arg1;
- (id)getAudioSpxQuality;
- (int)setAudioSpxQuality:(id)arg1;
- (id)getAudioSampleRate;
- (int)setAudioSampleRate:(id)arg1;
- (id)getAudioSampleBytes;
- (int)setAudioSampleBytes:(id)arg1;
- (int)setAudioChannel:(id)arg1;
- (id)getAudioType;
- (int)setAudioType:(id)arg1;
- (id)init;

@end


Here are a few links that relate directly and indirectly to your problem. After reading them, if you have more ?'s, by all means post up. But please add what you've done so we don't 'duplicate' the advice.
Sewer Gas I, Sewer Gas II, Sewer Gas III, Sewer Gas IV, and Sewer Gas V.
My best to ya and hope this helps.
Jay J -Moderator
© 2017 Renovate Your World LLC


The Smart Beaver from ABBYY decided to have a day off. But doing nothing the whole day turned out to be too boring, and he decided to play a game with pebbles. Initially, the Beaver has n pebbles. He arranges them in a equal rows, each row has b pebbles (a > 1). Note that the Beaver must use all the pebbles he has, i. e. n = a·b.

10 pebbles are arranged in two rows, each row has 5 pebbles

Once the Smart Beaver has arranged the pebbles, he takes back any of the resulting rows (that is, b pebbles) and discards all other pebbles. Then he arranges all his pebbles again (possibly choosing other values of a and b) and takes back one row, and so on. The game continues until at some point the Beaver ends up with exactly one pebble.

The game process can be represented as a finite sequence of integers c1, ..., ck, where:

- c1 = n
- ci + 1 is the number of pebbles that the Beaver ends up with after the i-th move, that is, the number of pebbles in a row after some arrangement of ci pebbles (1 ≤ i < k). Note that ci > ci + 1.
- ck = 1

The result of the game is the sum of numbers ci. You are given n. Find the maximum possible result of the game.


#define DEMO_STR_BLANK_LINE "                                \0",

const char *demo_string[] = {	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	"1983 CALLS FOR YOUR BYTES!\0",
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	"COME AND JOIN US FOR A WEEKEND FULL OF FUN,\0",
	"COMPETITIONS AND MEETING OF OLD            \0",
	"AND NEW FRIENDS IN THE PULSATING CITY      \0",
	"OF BERLIN, GERMANY\0",
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	"THE PARTYPLACE IS LOCATED                  \0",
	"IN THE NORTH-EAST OF BERLIN, EASILY REACHABLE\0",
	"BY PLANE, CAR OR TRAIN.                    \0",
	DEMO_STR_BLANK_LINE
	"IT FEATURES SPACE FOR UP TO 200 PEOPLE,    \0",
	"A BIG OUTDOOR AREA (BONFIRE!),             \0",
	"A SEPARATE SLEEPING AREA, NEARBY SHOPS,    \0",
	"HOTELS AND LOTS MORE.                      \0",
	DEMO_STR_BLANK_LINE
	"EXPECT A WIDE VARIETY OF COMPETITIONS,     \0",
	"AMAZING LIVE-ACTS, SEMINARS, RETRO-GAMING  \0",
	"AND MUCH MORE YET TO BE ANNOUNCED...       \0",
	DEMO_STR_BLANK_LINE
	"WE LOOK FORWARD TO PARTYING WITH YOU       \0",
	"AND OF COURSE ARE THRILLED TO SEE YOUR ENTRIES,\0",
	"REGARDLESS OF PLATFORM!                    \0",
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	"HERE IS S A SPECIAL ANNOUNCEMENT           \0",
	DEMO_STR_BLANK_LINE
	"FOR ALL YOU CHIPTUNE-LOVERS OUT THERE:     \0",
	"        ON FRIDAY WE WILL HOST             \0",
	"    ::: AUTUMN BLIPS (AT) DEADLINE :::     \0",
	"A CHIPTUNE FESTIVAL INSIDE THE FESTIVAL:   \0",
	"7 CHIPTUNE ARTISTS FROM ALL OVER EUROPE    \0",
	"WILL MAKE YOU DANCE USING THEIR GAMEBOYS,  \0",
	"SPECTRUMS, BEEPERS AND MODS.               \0",
	"ALL INCLUDED IN THE NORMAL TICKET!         \0",
	DEMO_STR_BLANK_LINE
	"SO START YOUR ENGINES, BOOT YOUR C64,      \0",
	"SPIN THE FLOPPY-DISKS                      \0",
	"AND HEAD YOUR WAY TO THE FUTURE OF 1983.   \0",
	DEMO_STR_BLANK_LINE
	"BASS – PIXELS – CITY LIGHTS                \0",
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	DEMO_STR_BLANK_LINE
	"  \0",
	"  \0",
	"  \0"

	// "COME AND JOIN US FOR A WEEKEND FULL OF FUN\0",
	// "COMPETITIONS AND MEETING          \0",
	// "OF OLD AND NEW FRIENDS          \0",
	// "IN THE PULSATING CITY OF BERLIN, GERMANY.\0",
	// "THE PARTYPLACE IS LOCATED     \0",
	// "IN THE NORTH-EAST OF BERLIN     \0",
	// "EASILY REACHABLE BY PLANE, CAR OR TRAIN.\0",
	// "IT FEATURES SPACE FOR UP TO 200 PEOPLE,\0",
	// "A BIG OUTDOOR AREA (BONFIRE),     \0",
	// "A SEPARATE SLEEPING AREA,     \0",
	// "NEARBY SHOPS, HOTELS AND LOTS MORE.\0",
	// "     \0",
	// "BASS PIXELS CITY LIGHTS\0",
	// " \0",
	// " \0"
};

const char *ascii_art[] = {
"\n",
""
};


A wonderful night last night. Despite the blizzard, people came out to the directing seminar. There was beer, there was conversation, there were good times. We were supposed to be in the back room, but the place double booked us. So we held the seminar out in the open bar. It was strange because there was a mix of attendees and bar-goers. I wonder what the bar-goers were thinking.
There were a lot of great filmmakers, new and experienced, with tons of great questions. It was a very basic seminar so I can’t help but think that some people, with more experience, walk away a little disappointed, but what can you do. I hope, for the most part, people walked away with some new insight to the process or a few good tips they can use on their own productions.
Here are some photos from the night:
Here’s the crowd from my POV.
A few other angles.
And me, trying to stay warm.
I want to thank everyone for coming out in that weather. It shows real dedication from the members. If you want to get involved with film making in the Chicago area, check out Chicago Filmmakers in Action.


Email notifications in PIM
Privileged Identity Management (PIM) lets you know when important events occur in your Azure Active Directory (Azure AD) organization, such as when a role is assigned or activated. Privileged Identity Management keeps you informed by sending you and other participants email notifications. These emails might also include links to relevant tasks, such activating or renewing a role. This article describes what these emails look like, when they are sent, and who receives them.
Sender email address and subject line
Emails sent from Privileged Identity Management for both Azure AD and Azure resource roles have the following sender email address:
- Email address: firstname.lastname@example.org
- Display name: Microsoft Azure
These emails include a PIM prefix in the subject line. Here's an example:
- PIM: Alain Charon was permanently assigned the Backup Reader role
Notifications for Azure AD roles
Privileged Identity Management sends emails when the following events occur for Azure AD roles:
- When a privileged role activation is pending approval
- When a privileged role activation request is completed
- When Azure AD Privileged Identity Management is enabled
Who receives these emails for Azure AD roles depends on your role, the event, and the notifications setting:
|User||Role activation is pending approval||Role activation request is completed||PIM is enabled|
|Privileged Role Administrator(Activated/Eligible)||Yes(only if no explicit approvers are specified)||Yes*||Yes|
* If the Notifications setting is set to Enable.
The following shows an example email that is sent when a user activates an Azure AD role for the fictional Contoso organization.
Weekly Privileged Identity Management digest email for Azure AD roles
A weekly Privileged Identity Management summary email for Azure AD roles is sent to Privileged Role Administrators, Security Administrators, and Global Administrators that have enabled Privileged Identity Management. This weekly email provides a snapshot of Privileged Identity Management activities for the week as well as privileged role assignments. It is only available for Azure AD organizations on the public cloud. Here's an example email:
The email includes:
|Users activated||Number of times users activated their eligible role inside the organization.|
|Users made permanent||Number of times users with an eligible assignment is made permanent.|
|Role assignments in Privileged Identity Management||Number of times users are assigned an eligible role inside Privileged Identity Management.|
|Role assignments outside of PIM||Number of times users are assigned a permanent role outside of Privileged Identity Management (inside Azure AD).|
The Overview of your top roles section lists the top five roles in your organization based on total number of permanent and eligible administrators for each role. The Take action link opens Discovery & Insights where you can convert permanent administrators to eligible administrators in batches.
Email timing for activation approvals
When users activate their role and the role setting requires approval, approvers will receive two emails for each approval:
- Request to approve or deny the user's activation request (sent by the request approval engine)
- The user's request is approved (sent by the request approval engine)
Also, Global Administrators and Privileged Role Administrators receive an email for each approval:
- The user's role is activated (sent by Privileged Identity Management)
The first two emails sent by the request approval engine can be delayed. Currently, 90% of emails take three to ten minutes, but for 1% customers it can be much longer, up to fifteen minutes.
If an approval request is approved in the Azure portal before the first email is sent, the first email will no longer be triggered and other approvers won't be notified by email of the approval request. It might appear as if the they didn't get an email but it's the expected behavior.
PIM emails for Azure resource roles
Privileged Identity Management sends emails to Owners and User Access Administrators when the following events occur for Azure resource roles:
- When a role assignment is pending approval
- When a role is assigned
- When a role is soon to expire
- When a role is eligible to extend
- When a role is being renewed by an end user
- When a role activation request is completed
Privileged Identity Management sends emails to end users when the following events occur for Azure resource roles:
- When a role is assigned to the user
- When a user's role is expired
- When a user's role is extended
- When a user's role activation request is completed
The following shows an example email that is sent when a user is assigned an Azure resource role for the fictional Contoso organization.


This class was definitely more difficult than i had anticipated. Having to learn binary and machine code as well as program the lego mindstorm robot was not what I was expecting. I had thought that this class would be a breeze and that I wouldn’t learn any new information since I’ve been involved in the filled of information technology for a few years now. I was very wrong.
The different things that we covered in this class really brought to light how little I really knew and how much stuff was actually out there. There’s stuff going on with technology that I did not even know existed.I am very impressed with how much was covered in this class and would recommend it to everybody, regardless of their major.
I will take a lot of things out of this class. For the most part I will take away the understanding that it is impossible to know everything in the IT field and I never will. What I can do is have a healthy respect for the other areas of information technology and focus on my passion of networking.


How to exceute code after response.redirect? I want to force file download using response.redirect , once the file is downloaded i wanted to show modal pop up to send email.
but after response.redirect the popup is not getting called. Pls help me how to do this,
Thanks for your reply. I am doing like this. any suggestions?
Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName.Name); long FileSize = myFile.Length; byte Buffer = new byte[(int)FileSize]; myFile.Read(Buffer, 0, (int)FileSize); myFile.Close(); Response.BinaryWrite(Buffer); // Response.Redirect(filepath,false); Response.Flush(); Response.Close(); ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowPopup", "window.setTimeout('PopupModal()',50);", true);


With the help of the
ls command, users and superusers list information about files and directories. This article helps the administrator and user identify file permissions, which is useful for access and basic troubleshooting.
At its most basic, you can use the
ls command to see what files are in a directory: Note: The listing may or may not be color-coded.
[root@centos7 ~]# ls /etc abrt firewalld makedumpfile.conf.sample rdma adjtime flatpak man_db.conf redhat-release aliases fonts maven request-key.conf aliases.db fprintd.conf mime.types request-key.d alsa fstab mke2fs.conf resolv.conf alternatives fuse.conf modprobe.d rhsm anacrontab gconf modules-load.d rpc ...
There are many flags available to give you more information with your file listing. The most common one to use is
--all), since it shows you all of the files in the directory, including the ones that start with a dot (e.g.,
Another common flag is
-l, which gives you more information about the files in a directory, including the file’s permissions, ownership, and size. If you want to be able to tell more easily what units a file size is in (e.g., 1K, 234M, 2G), you can add the
-h (short for
Let’s walk through an example. A simple file listing in the root user’s directory might be this:
[root@name ~]# ls /root anaconda-ks.cfg
If you want the long format version of this list (we will cover the additional information shown here in the next section):
[root@name ~]# ls -l /root total 4 -rw-------. 1 root root 896 Feb 22 01:40 anaconda-ks.cfg
However, if you add the
-a flag, the
ls command returns a short-form list including the hidden items:
[root@name ~]# ls -a /root . anaconda-ks.cfg .bash_logout .bashrc .cshrc .tcshrc .. .bash_history .bash_profile .cache .local
Consider the single period and double period in both directory lists. The single dot (
.) refers to the directory itself. This dot is convenient if you want to run a command and reference your current directory (for example, when you want to copy a file there).
The double dots (
..) refer to the parent directory. If you type
cd .. you move up one step in the filesystem hierarchy. For example, if your current directory is
cd .. would take you to
/, the very top of the hierarchy.
If you combine the
-a option with the
-l option into
-la, you get more details about the hidden and not hidden files:
[root@name ~]# ls -la /root total 44 dr-xr-x---. 4 root root 4096 Feb 11 05:47 . dr-xr-xr-x. 19 root root 4096 Jul 11 13:15 .. -rw-------. 1 root root 896 Feb 22 01:40 anaconda-ks.cfg -rw-------. 1 root root 163 Jul 11 01:18 .bash_history -rw-r--r--. 1 root root 18 Feb 2 10:37 .bash_logout -rw-r--r--. 1 root root 176 Feb 2 10:37 .bash_profile -rw-r--r--. 1 root root 176 Feb 2 10:37 .bashrc drwx------. 3 root root 4096 Jul 11 01:37 .cache -rw-r--r--. 1 root root 100 Feb 2 10:37 .cshrc drwxr-xr-x. 3 root root 4096 Feb 22 01:57 .local -rw-r--r--. 1 root root 129 Feb 2 10:37 .tcshrc
Decoding the long listing format
When you start using the
-l flag, you will notice a lot more information. Here is an example line of output:
drwxrwxr-x 2 root test 4096 Dec 3 2009 test
The first character to the left tells you what you’re looking at. If it’s a
d, as you see here, that tells that this file is a directory, which is basically a special kind of file (and it will be referred to as a file throughout). However, if it was a dash (
-), that would indicate that the file is a regular file.
If the first character was a lowercase
l, then this item would be a special file type called a symlink, or soft link, which is a pointer (shortcut) to another location in the filesystem. Such a listing might look like this:
lrwxrwxrwx 1 root root 4 Jun 30 03:29 sh -> bash
After the first character are the permission abbreviations, which are grouped in threes. Permissions for files are represented by the following letters:
rfor the read permission
wfor the write permission
xfor the execute permission
Back to this example:
drwxrwxr-x 2 root test 4096 Dec 3 2009 test
- The first triplet (
rwx) shows the permissions for the user or file owner.
- The next triplet (
rwx) shows the permissions for the group category.
- The last triplet (
r-x) shows the permissions for the final category, other.
In this example, users who are neither the file owner nor in the group have read and execute permissions but not write, as indicated by the dash (
-) in the middle position.
The number listed after the permissions indicates either the link count (for a file) or the number of contained directory entries (for a directory). This number is not relevant for permissions.
After this number, the first name indicates the file’s owner. The user permissions (first triplet) apply to this owner, so in this example, the user
root has read, write, and execute permissions for this directory.
The second name is the file’s group. The group permissions apply to any user in the same group, so in this case, anyone in the
Now you should have a much better feeling for getting information about your files from the command line. The
ls command has many more options. Type
man ls to learn more, and figure out your favorite flag combinations for getting things done. You might even want to make some aliases.


/**************************************************************************//**
 * $Id::                                                                  $
 *
 * @file     system_LPC11xx.h
 * @brief    CMSIS Cortex-M0 Device Peripheral Access Layer Header File
 *           for the NXP LPC11xx Device Series
 * @version  V1.00
 * @date     17. November 2009
 *
 * @note
 * Copyright (C) 2009 ARM Limited. All rights reserved.
 *
 * @par
 * ARM Limited (ARM) is supplying this software for use with Cortex-M
 * processor based microcontrollers.  This file can be freely distributed
 * within development tools that are supporting such ARM based processors.
 *
 * @par
 * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 ******************************************************************************/

#ifndef __SYSTEM_LPC11xx_H
#define __SYSTEM_LPC11xx_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>

extern uint32_t SystemCoreClock;     /*!< System Clock Frequency (Core Clock)  */

/**
 * Initialize the system
 *
 * @param  none
 * @return none
 *
 * @brief  Setup the microcontroller system.
 *         Initialize the System and update the SystemCoreClock variable.
 */
#define CONFIG_ENABLE_CMSIS_SYSTEMINIT				1
extern void SystemInit (void);

/**
 * Update SystemCoreClock variable
 *
 * @param  none
 * @return none
 *
 * @brief  Updates the SystemCoreClock with current core Clock
 *         retrieved from cpu registers.
 */
#define CONFIG_ENABLE_CMSIS_SYSTEMCORECLOCKUPDATE	1
//#define CONFIG_CMSIS_SET_SYSTEMCORECLOCK_DEFAULT	48000000
extern void SystemCoreClockUpdate (void);

/*
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
*/

/*--------------------- Clock Configuration ----------------------------------
//
// <e> Clock Configuration
//   <e1> System Clock Setup
//     <e2> System Oscillator Enable
//       <o3.1> Select System Oscillator Frequency Range
//                     <0=> 1 - 20 MHz
//                     <1=> 15 - 25 MHz
//     </e2>
//     <e4> Watchdog Oscillator Enable
//       <o5.0..4> Select Divider for Fclkana
//                     <0=>   2 <1=>   4 <2=>   6 <3=>   8
//                     <4=>  10 <5=>  12 <6=>  14 <7=>  16
//                     <8=>  18 <9=>  20 <10=> 22 <11=> 24
//                     <12=> 26 <13=> 28 <14=> 30 <15=> 32
//                     <16=> 34 <17=> 36 <18=> 38 <19=> 40
//                     <20=> 42 <21=> 44 <22=> 46 <23=> 48
//                     <24=> 50 <25=> 52 <26=> 54 <27=> 56
//                     <28=> 58 <29=> 60 <30=> 62 <31=> 64
//       <o5.5..8> Select Watchdog Oscillator Analog Frequency (Fclkana)
//                     <0=> Disabled
//                     <1=> 0.5 MHz
//                     <2=> 0.8 MHz
//                     <3=> 1.1 MHz
//                     <4=> 1.4 MHz
//                     <5=> 1.6 MHz
//                     <6=> 1.8 MHz
//                     <7=> 2.0 MHz
//                     <8=> 2.2 MHz
//                     <9=> 2.4 MHz
//                     <10=> 2.6 MHz
//                     <11=> 2.7 MHz
//                     <12=> 2.9 MHz
//                     <13=> 3.1 MHz
//                     <14=> 3.2 MHz
//                     <15=> 3.4 MHz
//     </e4>
//     <o6> Select Input Clock for sys_pllclkin (Register: SYSPLLCLKSEL)
//                     <0=> IRC Oscillator
//                     <1=> System Oscillator
//                     <2=> WDT Oscillator
//                     <3=> Invalid
//     <e7> Use System PLL
//                     <i> F_pll = M * F_in
//                     <i> F_in must be in the range of 10 MHz to 25 MHz
//       <o8.0..4>   M: PLL Multiplier Selection
//                     <1-32><#-1>
//       <o8.5..6>   P: PLL Divider Selection
//                     <0=> 2
//                     <1=> 4
//                     <2=> 8
//                     <3=> 16
//       <o8.7>      DIRECT: Direct CCO Clock Output Enable
//       <o8.8>      BYPASS: PLL Bypass Enable
//     </e7>
//     <o9> Select Input Clock for Main clock (Register: MAINCLKSEL)
//                     <0=> IRC Oscillator
//                     <1=> Input Clock to System PLL
//                     <2=> WDT Oscillator
//                     <3=> System PLL Clock Out
//   </e1>
//   <o10.0..7> System AHB Divider <0-255>
//                     <i> 0 = is disabled
//   <o11.0>   SYS Clock Enable
//   <o11.1>   ROM Clock Enable
//   <o11.2>   RAM Clock Enable
//   <o11.3>   FLASHREG Flash Register Interface Clock Enable
//   <o11.4>   FLASHARRAY Flash Array Access Clock Enable
//   <o11.5>   I2C Clock Enable
//   <o11.6>   GPIO Clock Enable
//   <o11.7>   CT16B0 Clock Enable
//   <o11.8>   CT16B1 Clock Enable
//   <o11.9>   CT32B0 Clock Enable
//   <o11.10>  CT32B1 Clock Enable
//   <o11.11>  SSP0 Clock Enable
//   <o11.12>  UART Clock Enable
//   <o11.13>  ADC Clock Enable
//   <o11.15>  WDT Clock Enable
//   <o11.16>  IOCON Clock Enable
//   <o11.18>  SSP1 Clock Enable
//
//   <o12.0..7> SSP0 Clock Divider <0-255>
//                     <i> 0 = is disabled
//   <o13.0..7> UART Clock Divider <0-255>
//                     <i> 0 = is disabled
//   <o14.0..7> SSP1 Clock Divider <0-255>
//                     <i> 0 = is disabled
// </e>
*/
#define CLOCK_SETUP           1
#define SYSCLK_SETUP          1
#define SYSOSC_SETUP          1
#define SYSOSCCTRL_Val        0x00000000
#define WDTOSC_SETUP          0
#define WDTOSCCTRL_Val        0x000000A0
#define SYSPLLCLKSEL_Val      0x00000001
#define SYSPLL_SETUP          1
#define SYSPLLCTRL_Val        0x00000023
#define MAINCLKSEL_Val        0x00000003
#define SYSAHBCLKDIV_Val      0x00000001
#define AHBCLKCTRL_Val        0x0001005F
#define SSP0CLKDIV_Val        0x00000001
#define UARTCLKDIV_Val        0x00000001
#define SSP1CLKDIV_Val        0x00000001

/*--------------------- Memory Mapping Configuration -------------------------
//
// <e> Memory Mapping
//   <o1.0..1> System Memory Remap (Register: SYSMEMREMAP)
//                     <0=> Bootloader mapped to address 0
//                     <1=> RAM mapped to address 0
//                     <2=> Flash mapped to address 0
//                     <3=> Flash mapped to address 0
// </e>
*/
#define MEMMAP_SETUP          0
#define SYSMEMREMAP_Val       0x00000001

/*
//-------- <<< end of configuration section >>> ------------------------------
*/

#ifdef __cplusplus
}
#endif

#endif /* __SYSTEM_LPC11x_H */


I worked 14 years as an electrician and I have gone back to school for Electrical Engineering. I'm about a third of the way through my EE degree, having taken maths up through Calc 3/Diffy Q's and a bunch of other classes. However, the more I get into the curriculum and get an idea for what most engineers do, I'm starting to have doubts. I envisioned designing a product, building and testing it, etc... Or possibly overseeing the electrical systems of an industrial (or utility) setting with some hands on work to maintain or improve the facilities. In short, I don't think I would enjoy sitting in front of a computer all day. I know that many people will say that engineering jobs vary, but I was hoping to find some anecdotal evidence of people who apply their knowledge as opposed to just designing and using theory. I wonder if I am describing more of an EET degree, but I've always thought those degrees were not very useful (that is the picture I've gotten at least, so no offense to anyone that might have an EET degree). Any input from anyone? Thanks.


/* Copyright 2013-2014 IBM Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * 	http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <skiboot.h>
#include <xscom.h>
#include <io.h>
#include <processor.h>
#include <device.h>
#include <chip.h>
#include <centaur.h>
#include <errorlog.h>
#include <opal-api.h>
#include <timebase.h>

/* Mask of bits to clear in HMER before an access */
#define HMER_CLR_MASK	(~(SPR_HMER_XSCOM_FAIL | \
			   SPR_HMER_XSCOM_DONE | \
			   SPR_HMER_XSCOM_STATUS))

DEFINE_LOG_ENTRY(OPAL_RC_XSCOM_RW, OPAL_PLATFORM_ERR_EVT, OPAL_XSCOM,
		OPAL_CEC_HARDWARE, OPAL_PREDICTIVE_ERR_GENERAL,
		OPAL_NA);

DEFINE_LOG_ENTRY(OPAL_RC_XSCOM_INDIRECT_RW, OPAL_PLATFORM_ERR_EVT, OPAL_XSCOM,
		OPAL_CEC_HARDWARE, OPAL_PREDICTIVE_ERR_GENERAL,
		OPAL_NA);

DEFINE_LOG_ENTRY(OPAL_RC_XSCOM_RESET, OPAL_PLATFORM_ERR_EVT, OPAL_XSCOM,
		OPAL_CEC_HARDWARE, OPAL_PREDICTIVE_ERR_GENERAL,
		OPAL_NA);

DEFINE_LOG_ENTRY(OPAL_RC_XSCOM_BUSY, OPAL_PLATFORM_ERR_EVT, OPAL_XSCOM,
		OPAL_CEC_HARDWARE, OPAL_PREDICTIVE_ERR_GENERAL,
		OPAL_NA);

/* xscom details to trigger xstop */
static struct {
	uint64_t addr;
	uint64_t fir_bit;
} xstop_xscom;

/*
 * Locking notes:
 *
 * We used to have a per-target lock. However due to errata HW822317
 * we can have issues on the issuer side if multiple threads try to
 * send XSCOMs simultaneously (HMER responses get mixed up), so just
 * use a global lock instead
 */
static struct lock xscom_lock = LOCK_UNLOCKED;

static inline void *xscom_addr(uint32_t gcid, uint32_t pcb_addr)
{
	struct proc_chip *chip = get_chip(gcid);
	uint64_t addr;

	assert(chip);
	addr  = chip->xscom_base;
	if (proc_gen <= proc_gen_p8) {
		addr |= ((uint64_t)pcb_addr << 4) & ~0xfful;
		addr |= (pcb_addr << 3) & 0x78;
	} else
		addr |= ((uint64_t)pcb_addr << 3);
	return (void *)addr;
}

static uint64_t xscom_wait_done(void)
{
	uint64_t hmer;

	do
		hmer = mfspr(SPR_HMER);
	while(!(hmer & SPR_HMER_XSCOM_DONE));

	/*
	 * HW822317: We need to read a second time as the actual
	 * status can be delayed by 1 cycle after DONE
	 */
	return mfspr(SPR_HMER);
}

static void xscom_reset(uint32_t gcid)
{
	u64 hmer;

	/* Clear errors in HMER */
	mtspr(SPR_HMER, HMER_CLR_MASK);

	/* First we need to write 0 to a register on our chip */
	out_be64(xscom_addr(this_cpu()->chip_id, 0x202000f), 0);
	hmer = xscom_wait_done();
	if (hmer & SPR_HMER_XSCOM_FAIL)
		goto fail;

	/* Then we need to clear those two other registers on the target */
	out_be64(xscom_addr(gcid, 0x2020007), 0);
	hmer = xscom_wait_done();
	if (hmer & SPR_HMER_XSCOM_FAIL)
		goto fail;
	out_be64(xscom_addr(gcid, 0x2020009), 0);
	hmer = xscom_wait_done();
	if (hmer & SPR_HMER_XSCOM_FAIL)
		goto fail;
	return;
 fail:
	/* Fatal error resetting XSCOM */
	log_simple_error(&e_info(OPAL_RC_XSCOM_RESET),
		"XSCOM: Fatal error resetting engine after failed access !\n");

	/* XXX Generate error log ? attn ? panic ?
	 * If we decide to panic, change the above severity to PANIC
	 */
}

static int64_t xscom_handle_error(uint64_t hmer, uint32_t gcid, uint32_t pcb_addr,
			      bool is_write, int64_t retries)
{
	struct timespec ts;
	unsigned int stat = GETFIELD(SPR_HMER_XSCOM_STATUS, hmer);

	/* XXX Figure out error codes from doc and error
	 * recovery procedures
	 */
	switch(stat) {
	case 1:
		/*
		 * XSCOM engine is blocked, need to retry. Reset XSCOM
		 * engine after crossing retry threshold before
		 * retrying again.
		 */
		if (retries && !(retries  % XSCOM_BUSY_RESET_THRESHOLD)) {
			prlog(PR_NOTICE, "XSCOM: Busy even after %d retries, "
				"resetting XSCOM now. Total retries  = %lld\n",
				XSCOM_BUSY_RESET_THRESHOLD, retries);
			xscom_reset(gcid);

			/*
			 * Its observed that sometimes immediate retry of
			 * XSCOM operation returns wrong data. Adding a
			 * delay for XSCOM reset to be effective. Delay of
			 * 10 ms is found to be working fine experimentally.
			 * FIXME: Replace 10ms delay by exact delay needed
			 * or other alternate method to confirm XSCOM reset
			 * completion, after checking from HW folks.
			 */
			ts.tv_sec = 0;
			ts.tv_nsec = 10 * 1000;
			nanosleep_nopoll(&ts, NULL);
		}

		/* Log error if we have retried enough and its still busy */
		if (retries == XSCOM_BUSY_MAX_RETRIES)
			log_simple_error(&e_info(OPAL_RC_XSCOM_BUSY),
				"XSCOM: %s-busy error gcid=0x%x pcb_addr=0x%x "
				"stat=0x%x\n", is_write ? "write" : "read",
				gcid, pcb_addr, stat);
		return OPAL_BUSY;

	case 2: /* CPU is asleep, reset XSCOM engine and return */
		xscom_reset(gcid);
		return OPAL_WRONG_STATE;
	case 3: /* Partial good */
	case 4: /* Invalid address / address error */
	case 5: /* Clock error */
	case 6: /* Parity error  */
	case 7: /* Time out */
		break;
	}

	/* XXX: Create error log entry ? */
	log_simple_error(&e_info(OPAL_RC_XSCOM_RW),
		"XSCOM: %s error gcid=0x%x pcb_addr=0x%x stat=0x%x\n",
		is_write ? "write" : "read", gcid, pcb_addr, stat);

	/* We need to reset the XSCOM or we'll hang on the next access */
	xscom_reset(gcid);

	/* Non recovered ... just fail */
	return OPAL_HARDWARE;
}

static void xscom_handle_ind_error(uint64_t data, uint32_t gcid,
				   uint64_t pcb_addr, bool is_write)
{
	unsigned int stat = GETFIELD(XSCOM_DATA_IND_ERR, data);
	bool timeout = !(data & XSCOM_DATA_IND_COMPLETE);

	/* XXX: Create error log entry ? */
	if (timeout)
		log_simple_error(&e_info(OPAL_RC_XSCOM_INDIRECT_RW),
			"XSCOM: indirect %s timeout, gcid=0x%x pcb_addr=0x%llx"
			" stat=0x%x\n",
			is_write ? "write" : "read", gcid, pcb_addr, stat);
	else
		log_simple_error(&e_info(OPAL_RC_XSCOM_INDIRECT_RW),
			"XSCOM: indirect %s error, gcid=0x%x pcb_addr=0x%llx"
			" stat=0x%x\n",
			is_write ? "write" : "read", gcid, pcb_addr, stat);
}

static bool xscom_gcid_ok(uint32_t gcid)
{
	return get_chip(gcid) != NULL;
}

/*
 * Low level XSCOM access functions, perform a single direct xscom
 * access via MMIO
 */
static int __xscom_read(uint32_t gcid, uint32_t pcb_addr, uint64_t *val)
{
	uint64_t hmer;
	int64_t ret, retries;

	if (!xscom_gcid_ok(gcid)) {
		prerror("%s: invalid XSCOM gcid 0x%x\n", __func__, gcid);
		return OPAL_PARAMETER;
	}

	for (retries = 0; retries <= XSCOM_BUSY_MAX_RETRIES; retries++) {
		/* Clear status bits in HMER (HMER is special
		 * writing to it *ands* bits
		 */
		mtspr(SPR_HMER, HMER_CLR_MASK);

		/* Read value from SCOM */
		*val = in_be64(xscom_addr(gcid, pcb_addr));

		/* Wait for done bit */
		hmer = xscom_wait_done();

		/* Check for error */
		if (!(hmer & SPR_HMER_XSCOM_FAIL))
			return OPAL_SUCCESS;

		/* Handle error and possibly eventually retry */
		ret = xscom_handle_error(hmer, gcid, pcb_addr, false, retries);
		if (ret != OPAL_BUSY)
			break;
	}

	prerror("XSCOM: Read failed, ret =  %lld\n", ret);
	return ret;
}

static int __xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val)
{
	uint64_t hmer;
	int64_t ret, retries = 0;

	if (!xscom_gcid_ok(gcid)) {
		prerror("%s: invalid XSCOM gcid 0x%x\n", __func__, gcid);
		return OPAL_PARAMETER;
	}

	for (retries = 0; retries <= XSCOM_BUSY_MAX_RETRIES; retries++) {
		/* Clear status bits in HMER (HMER is special
		 * writing to it *ands* bits
		 */
		mtspr(SPR_HMER, HMER_CLR_MASK);

		/* Write value to SCOM */
		out_be64(xscom_addr(gcid, pcb_addr), val);

		/* Wait for done bit */
		hmer = xscom_wait_done();

		/* Check for error */
		if (!(hmer & SPR_HMER_XSCOM_FAIL))
			return OPAL_SUCCESS;

		/* Handle error and possibly eventually retry */
		ret = xscom_handle_error(hmer, gcid, pcb_addr, true, retries);
		if (ret != OPAL_BUSY)
			break;
	}

	prerror("XSCOM: Write failed, ret =  %lld\n", ret);
	return ret;
}

/*
 * Indirect XSCOM access functions
 */
static int xscom_indirect_read(uint32_t gcid, uint64_t pcb_addr, uint64_t *val)
{
	uint32_t addr;
	uint64_t data;
	int rc, retries;

	if (proc_gen < proc_gen_p8) {
		*val = (uint64_t)-1;
		return OPAL_UNSUPPORTED;
	}

	/* Write indirect address */
	addr = pcb_addr & 0x7fffffff;
	data = XSCOM_DATA_IND_READ |
		(pcb_addr & XSCOM_ADDR_IND_ADDR);
	rc = __xscom_write(gcid, addr, data);
	if (rc)
		goto bail;

	/* Wait for completion */
	for (retries = 0; retries < XSCOM_IND_MAX_RETRIES; retries++) {
		rc = __xscom_read(gcid, addr, &data);
		if (rc)
			goto bail;
		if ((data & XSCOM_DATA_IND_COMPLETE) &&
		    ((data & XSCOM_DATA_IND_ERR) == 0)) {
			*val = data & XSCOM_DATA_IND_DATA;
			break;
		}
		if ((data & XSCOM_DATA_IND_COMPLETE) ||
		    (retries >= XSCOM_IND_MAX_RETRIES)) {
			xscom_handle_ind_error(data, gcid, pcb_addr,
					       false);
			rc = OPAL_HARDWARE;
			goto bail;
		}
	}
 bail:
	if (rc)
		*val = (uint64_t)-1;
	return rc;
}

static int xscom_indirect_write(uint32_t gcid, uint64_t pcb_addr, uint64_t val)
{
	uint32_t addr;
	uint64_t data;
	int rc, retries;

	if (proc_gen < proc_gen_p8)
		return OPAL_UNSUPPORTED;

	/* Write indirect address & data */
	addr = pcb_addr & 0x7fffffff;
	data = pcb_addr & XSCOM_ADDR_IND_ADDR;
	data |= val & XSCOM_ADDR_IND_DATA;

	rc = __xscom_write(gcid, addr, data);
	if (rc)
		goto bail;

	/* Wait for completion */
	for (retries = 0; retries < XSCOM_IND_MAX_RETRIES; retries++) {
		rc = __xscom_read(gcid, addr, &data);
		if (rc)
			goto bail;
		if ((data & XSCOM_DATA_IND_COMPLETE) &&
		    ((data & XSCOM_DATA_IND_ERR) == 0))
			break;
		if ((data & XSCOM_DATA_IND_COMPLETE) ||
		    (retries >= XSCOM_IND_MAX_RETRIES)) {
			xscom_handle_ind_error(data, gcid, pcb_addr,
					       true);
			rc = OPAL_HARDWARE;
			goto bail;
		}
	}
 bail:
	return rc;
}

static uint32_t xscom_decode_chiplet(uint32_t partid, uint64_t *pcb_addr)
{
	uint32_t gcid = (partid & 0x0fffffff) >> 4;
	uint32_t core = partid & 0xf;

	if (proc_gen == proc_gen_p9) {
		/* XXX Not supported */
		*pcb_addr = 0;
	} else {
		*pcb_addr |= P8_EX_PCB_SLAVE_BASE;
		*pcb_addr |= core << 24;
	}

	return gcid;
}

/*
 * External API
 */
int xscom_read(uint32_t partid, uint64_t pcb_addr, uint64_t *val)
{
	uint32_t gcid;
	int rc;

	/* Handle part ID decoding */
	switch(partid >> 28) {
	case 0: /* Normal processor chip */
		gcid = partid;
		break;
	case 8: /* Centaur */
		return centaur_xscom_read(partid, pcb_addr, val);
	case 4: /* EX chiplet */
		gcid = xscom_decode_chiplet(partid, &pcb_addr);
		if (pcb_addr == 0)
			return OPAL_UNSUPPORTED;
		break;
	default:
		/**
		 * @fwts-label XSCOMReadInvalidPartID
		 * @fwts-advice xscom_read was called with an invalid partid.
		 * There's likely a bug somewhere in the stack that's causing
		 * someone to try an xscom_read on something that isn't a
		 * processor, Centaur or EX chiplet.
		 */
		prerror("%s: invalid XSCOM partid 0x%x\n", __func__, partid);
		return OPAL_PARAMETER;
	}

	/* HW822317 requires us to do global locking */
	lock(&xscom_lock);

	/* Direct vs indirect access */
	if (pcb_addr & XSCOM_ADDR_IND_FLAG)
		rc = xscom_indirect_read(gcid, pcb_addr, val);
	else
		rc = __xscom_read(gcid, pcb_addr & 0x7fffffff, val);

	/* Unlock it */
	unlock(&xscom_lock);
	return rc;
}

opal_call(OPAL_XSCOM_READ, xscom_read, 3);

int xscom_write(uint32_t partid, uint64_t pcb_addr, uint64_t val)
{
	uint32_t gcid;
	int rc;

	/* Handle part ID decoding */
	switch(partid >> 28) {
	case 0: /* Normal processor chip */
		gcid = partid;
		break;
	case 8: /* Centaur */
		return centaur_xscom_write(partid, pcb_addr, val);
	case 4: /* EX chiplet */
		gcid = xscom_decode_chiplet(partid, &pcb_addr);
		break;
	default:
		/**
		 * @fwts-label XSCOMWriteInvalidPartID
		 * @fwts-advice xscom_write was called with an invalid partid.
		 * There's likely a bug somewhere in the stack that's causing
		 * someone to try an xscom_write on something that isn't a
		 * processor, Centaur or EX chiplet.
		 */
		prerror("%s: invalid XSCOM partid 0x%x\n", __func__, partid);
		return OPAL_PARAMETER;
	}

	/* HW822317 requires us to do global locking */
	lock(&xscom_lock);

	/* Direct vs indirect access */
	if (pcb_addr & XSCOM_ADDR_IND_FLAG)
		rc = xscom_indirect_write(gcid, pcb_addr, val);
	else
		rc = __xscom_write(gcid, pcb_addr & 0x7fffffff, val);

	/* Unlock it */
	unlock(&xscom_lock);
	return rc;
}
opal_call(OPAL_XSCOM_WRITE, xscom_write, 3);

int xscom_readme(uint64_t pcb_addr, uint64_t *val)
{
	return xscom_read(this_cpu()->chip_id, pcb_addr, val);
}

int xscom_writeme(uint64_t pcb_addr, uint64_t val)
{
	return xscom_write(this_cpu()->chip_id, pcb_addr, val);
}

int64_t xscom_read_cfam_chipid(uint32_t partid, uint32_t *chip_id)
{
	uint64_t val;
	int64_t rc = OPAL_SUCCESS;

	/* Mambo chip model lacks the f000f register, just make
	 * something up
	 */
	if (chip_quirk(QUIRK_NO_F000F)) {
		if (proc_gen == proc_gen_p9)
			val = 0x100D104980000000UL; /* P9 Nimbus DD1.0 */
		else
			val = 0x221EF04980000000UL; /* P8 Murano DD2.1 */
	} else
		rc = xscom_read(partid, 0xf000f, &val);

	/* Extract CFAM id */
	if (rc == OPAL_SUCCESS)
		*chip_id = (uint32_t)(val >> 44);

	return rc;
}

static void xscom_init_chip_info(struct proc_chip *chip)
{
	uint32_t val;
	int64_t rc;

	rc = xscom_read_cfam_chipid(chip->id, &val);
	if (rc) {
		prerror("XSCOM: Error %lld reading 0xf000f register\n", rc);
		/* We leave chip type to UNKNOWN */
		return;
	}

	/* Identify chip */
	switch(val & 0xff) {
	case 0xf9:
		chip->type = PROC_CHIP_P7;
		assert(proc_gen == proc_gen_p7);
		break;
	case 0xe8:
		chip->type = PROC_CHIP_P7P;
		assert(proc_gen == proc_gen_p7);
		break;
	case 0xef:
		chip->type = PROC_CHIP_P8_MURANO;
		assert(proc_gen == proc_gen_p8);
		break;
	case 0xea:
		chip->type = PROC_CHIP_P8_VENICE;
		assert(proc_gen == proc_gen_p8);
		break;
	case 0xd3:
		chip->type = PROC_CHIP_P8_NAPLES;
		assert(proc_gen == proc_gen_p8);
		break;
	case 0xd1:
		chip->type = PROC_CHIP_P9_NIMBUS;
		assert(proc_gen == proc_gen_p9);
		break;
	case 0xd4:
		chip->type = PROC_CHIP_P9_CUMULUS;
		assert(proc_gen == proc_gen_p9);
		break;
	default:
		printf("CHIP: Unknown chip type 0x%02x !!!\n",
		       (unsigned char)(val & 0xff));
	}

	/* Get EC level from CFAM ID */
	chip->ec_level = ((val >> 16) & 0xf) << 4;
	chip->ec_level |= (val >> 8) & 0xf;
}

/*
* This function triggers xstop by writing to XSCOM.
* Machine would enter xstop state post completion of this.
*/
int64_t xscom_trigger_xstop(void)
{
	int rc = OPAL_UNSUPPORTED;

	if (xstop_xscom.addr)
		rc = xscom_writeme(xstop_xscom.addr,
				PPC_BIT(xstop_xscom.fir_bit));

	return rc;
}

void xscom_init(void)
{
	struct dt_node *xn;
	const struct dt_property *p;

	dt_for_each_compatible(dt_root, xn, "ibm,xscom") {
		uint32_t gcid = dt_get_chip_id(xn);
		const struct dt_property *reg;
		struct proc_chip *chip;
		const char *chip_name;
		static const char *chip_names[] = {
			"UNKNOWN", "P7", "P7+", "P8E", "P8", "P8NVL", "P9N", "P9C"
		};

		chip = get_chip(gcid);
		assert(chip);

		/* XXX We need a proper address parsing. For now, we just
		 * "know" that we are looking at a u64
		 */
		reg = dt_find_property(xn, "reg");
		assert(reg);

		chip->xscom_base = dt_translate_address(xn, 0, NULL);

		/* Grab processor type and EC level */
		xscom_init_chip_info(chip);

		if (chip->type >= ARRAY_SIZE(chip_names))
			chip_name = "INVALID";
		else
			chip_name = chip_names[chip->type];

		printf("XSCOM: chip 0x%x at 0x%llx [%s DD%x.%x]\n",
		       gcid, chip->xscom_base,
		       chip_name,
		       chip->ec_level >> 4,
		       chip->ec_level & 0xf);
	}

	/* Collect details to trigger xstop via XSCOM write */
	p = dt_find_property(dt_root, "ibm,sw-checkstop-fir");
	if (p) {
		xstop_xscom.addr = dt_property_get_cell(p, 0);
		xstop_xscom.fir_bit = dt_property_get_cell(p, 1);
		prlog(PR_INFO, "XSTOP: XSCOM addr = 0x%llx, FIR bit = %lld\n",
					xstop_xscom.addr, xstop_xscom.fir_bit);
	} else
		prlog(PR_INFO, "XSTOP: ibm,sw-checkstop-fir prop not found\n");
}

void xscom_used_by_console(void)
{
	xscom_lock.in_con_path = true;

	/*
	 * Some other processor might hold it without having
	 * disabled the console locally so let's make sure that
	 * is over by taking/releasing the lock ourselves
	 */
	lock(&xscom_lock);
	unlock(&xscom_lock);
}

bool xscom_ok(void)
{
	return !lock_held_by_me(&xscom_lock);
}


Download the app and sign up with your Facebook, Google, or Apple account!
Categories are tags for topics that come up often. A given category appears in the main feed whenever there are new relevant articles. You can get custom alerts for categories just like any other tag.
The Tag Cloud shows the hashtags that are currently trending, with the most popular ones appearing near the top in the largest font.
To follow a hashtag, tap on one anywhere to navigate to the tag page showing the articles for that tag. Then, tap the bell in the upper right to set your custom alerts for that tag.
Lux indicates how many people have upvoted a story to indicate that it's important, whether good or bad news.
You can open a full article in a browser window by tapping the short link in the bottom left of any article listing or by tapping the three dots in the upper right and selecting "Open in browser" from the menu.
With the Luxihd app on your device, go to the article you want to share in your browser. Then tap the Luxihd button from the share menu and tap submit!


// Bytes primitive operations
//
// These are registered in mypyc.primitives.bytes_ops.

#include <Python.h>
#include "CPy.h"

CPyTagged CPyBytes_GetItem(PyObject *o, CPyTagged index) {
    if (CPyTagged_CheckShort(index)) {
        Py_ssize_t n = CPyTagged_ShortAsSsize_t(index);
        Py_ssize_t size = ((PyVarObject *)o)->ob_size;
        if (n < 0)
            n += size;
        if (n < 0 || n >= size) {
            PyErr_SetString(PyExc_IndexError, "index out of range");
            return CPY_INT_TAG;
        }
        unsigned char num = PyBytes_Check(o) ? ((PyBytesObject *)o)->ob_sval[n]
                                             : ((PyByteArrayObject *)o)->ob_bytes[n];
        return num << 1;
    } else {
        PyErr_SetString(PyExc_OverflowError, CPYTHON_LARGE_INT_ERRMSG);
        return CPY_INT_TAG;
    }
}

PyObject *CPyBytes_Concat(PyObject *a, PyObject *b) {
    if (PyBytes_Check(a) && PyBytes_Check(b)) {
        Py_ssize_t a_len = ((PyVarObject *)a)->ob_size;
        Py_ssize_t b_len = ((PyVarObject *)b)->ob_size;
        PyBytesObject *ret = (PyBytesObject *)PyBytes_FromStringAndSize(NULL, a_len + b_len);
        if (ret != NULL) {
            memcpy(ret->ob_sval, ((PyBytesObject *)a)->ob_sval, a_len);
            memcpy(ret->ob_sval + a_len, ((PyBytesObject *)b)->ob_sval, b_len);
        }
        return (PyObject *)ret;
    } else if (PyByteArray_Check(a)) {
        return PyByteArray_Concat(a, b);
    } else {
        PyBytes_Concat(&a, b);
        return a;
    }
}

static inline Py_ssize_t Clamp(Py_ssize_t a, Py_ssize_t b, Py_ssize_t c) {
    return a < b ? b : (a >= c ? c : a);
}

PyObject *CPyBytes_GetSlice(PyObject *obj, CPyTagged start, CPyTagged end) {
    if ((PyBytes_Check(obj) || PyByteArray_Check(obj))
            && CPyTagged_CheckShort(start) && CPyTagged_CheckShort(end)) {
        Py_ssize_t startn = CPyTagged_ShortAsSsize_t(start);
        Py_ssize_t endn = CPyTagged_ShortAsSsize_t(end);
        Py_ssize_t len = ((PyVarObject *)obj)->ob_size;
        if (startn < 0) {
            startn += len;
        }
        if (endn < 0) {
            endn += len;
        }
        startn = Clamp(startn, 0, len);
        endn = Clamp(endn, 0, len);
        Py_ssize_t slice_len = endn - startn;
        if (PyBytes_Check(obj)) {
            return PyBytes_FromStringAndSize(PyBytes_AS_STRING(obj) + startn, slice_len);
        } else {
            return PyByteArray_FromStringAndSize(PyByteArray_AS_STRING(obj) + startn, slice_len);
        }
    }
    return CPyObject_GetSlice(obj, start, end);
}

// Like _PyBytes_Join but fallback to dynamic call if 'sep' is not bytes
// (mostly commonly, for bytearrays)
PyObject *CPyBytes_Join(PyObject *sep, PyObject *iter) {
    if (PyBytes_CheckExact(sep)) {
        return _PyBytes_Join(sep, iter);
    } else {
        _Py_IDENTIFIER(join);
        return _PyObject_CallMethodIdOneArg(sep, &PyId_join, iter);
    }
}


Berland is a tourist country! At least, it can become such — the government of Berland is confident about this.

There are n cities in Berland, some pairs of which are connected by two-ways roads. Each road connects two different cities. In Berland there are no roads which connect the same pair of cities. It is possible to get from any city to any other city using given two-ways roads.

According to the reform each road will become one-way. It will be oriented to one of two directions.

To maximize the tourist attraction of Berland, after the reform for each city i the value ri will be calculated. It will equal to the number of cities x for which there is an oriented path from the city i to the city x. In other words, ri will equal the number of cities which can be reached from the city i by roads.

The government is sure that tourist's attention will be focused on the minimum value of ri.

Help the government of Berland make the reform to maximize the minimum of ri.


Conveyor matrix $$$m_n$$$ is matrix of size $$$n \times n$$$, where $$$n$$$ is an even number. The matrix consists of concentric ribbons moving clockwise.

In other words, the conveyor matrix for $$$n = 2$$$ is simply a matrix $$$2 \times 2$$$, whose cells form a cycle of length $$$4$$$ clockwise. For any natural $$$k \ge 2$$$, the matrix $$$m_{2k}$$$ is obtained by adding to the matrix $$$m_{2k - 2}$$$ an outer layer forming a clockwise cycle.

The conveyor matrix $$$8 \times 8$$$.

You are standing in a cell with coordinates $$$x_1, y_1$$$ and you want to get into a cell with coordinates $$$x_2, y_2$$$. A cell has coordinates $$$x, y$$$ if it is located at the intersection of the $$$x$$$th row and the $$$y$$$th column.

Standing on some cell, every second you will move to the cell next in the direction of movement of the tape on which you are. You can also move to a neighboring cell by spending one unit of energy. Movements happen instantly and you can make an unlimited number of them at any time.

Your task is to find the minimum amount of energy that will have to be spent to get from the cell with coordinates $$$x_1, y_1$$$ to the cell with coordinates $$$x_2, y_2$$$.

For example, $$$n=8$$$ initially you are in a cell with coordinates $$$1,3$$$ and you want to get into a cell with coordinates $$$6, 4$$$. You can immediately make $$$2$$$ movements, once you are in a cell with coordinates $$$3, 3$$$, and then after $$$8$$$ seconds you will be in the right cell.


Do you have a scripting-related question or problem? You can send your question or problem to [email protected].
For monitoring and reporting purposes, I need to know how many leaf (aka child) objects are in several of our Active Directory (AD) containers. I tried using the Active Directory Service Interfaces (ADSI) Count property in the script that Listing 1 shows, but this script fails with the error message C:\Scripts\Listing1.vbs(2, 1) Active Directory: Not implemented. How can I determine the number of objects in our AD containers?
As the error message suggests, the reason your script is failing is because the Count property isn't implemented by ADSI's LDAP provider, which means you can't use the property to determine the number of leaf objects in an AD container. You can work around the problem several ways. However, each solution has its drawbacks. The workarounds to count objects in an AD container include
- using a For Each...Next statement combined with a counter variable to enumerate and count the objects in the container
- using ADSI's ADsDSOObject provider (i.e., the OLE DB provider) to perform an ADO search, then using the ADO Command object's RecordSet.RecordCount property to read the number of records that the search returned
- using the new Windows Server 2003 attribute named msDS-Approx-Immed-Subordinates
Listing 2 demonstrates how to use the For Each...Next loop, which is also known as an enumerator, to count leaf objects. The script begins by initializing the counter variable named intContainerCount to 0. The script then binds to the target container and enumerates the objects in that container. During each iteration of the For Each...Next loop, intContainerCount increases by 1. After the loop finishes, the script echoes the total.
Although Listing 2 gets the job done, the script isn't particularly directory or network friendly when you run it remotely. Furthermore, it can be painfully slow when enumerating containers that contain hundreds of thousands of objects.
Listing 3 demonstrates how to use an ADO query coupled with the ADO Command object's RecordSet.RecordCount property to determine the number of objects in an AD container. Although Listing 3 is slightly more directory- and network-friendly than Listing 2, you'll be disappointed to learn that Listing 3 is almost as slow as Listing 2 because of the way in which the RecordCount property works. When the script reads the RecordCount property, as callout A in Listing 3 shows, the recordset is enumerated under the covers. The net result is identical to that of Listing 2 for all practical purposes. If you're curious why I subtracted 1 in the code at callout A, I did so to compensate for the base container being returned as part of the query results. Including the base container is typical for a Lightweight Directory Access Protocol (LDAP) query in which the scope is set to OneLevel, as is the case with Listing 3.
According to the AD software development kit (SDK), you can use Windows 2003's new msDS-Approx-Immed-Subordinates attribute "to assist the UI with determining how to display the contents of a container." However, the SDK goes on to say the attribute's value can be off by as much as 10 percent on large containers. My experience with msDS-Approx-Immed-Subordinates has been even worse. I've seen the attribute's value off by as much as 30 percent on a container with 100,000 objects. If you need an accurate count, don't use this attribute.
So, you have two accurate but slow solutions and one inaccurate solution. Which one, if any, should you use? If time isn't a concern (i.e., you can afford to let the script run for several hours, if necessary) and you don't need real-time statistics, I suggest that you use Listing 2. I also suggest that you schedule this script to run during nonpeak hours. If time is crucial or you need real-time statistics, you're going to have to be a bit more creative or use a third-party solution.


Subject: Re: [xsl] Ranking Random Nodes from Top to Bottom|
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Fri, 17 Aug 2007 15:30:47 +0200
I was thinking of the determining the string length from root to a particular node, and store that as output in the output file using XSLT. Then post-process it in Python to rank the paths into document order, where the lowest number appears on top and the highest number at the bottom. Does that make any sense?
Cheers, -- Abel Braaksma


-CAR Stock/1911 Bushing Wrench-Heat treated-$1.75 each
-Green Followers-USGI-30 rnders-$10.00 a dozen
-Next Generation 30 rnd replacement spring. Made of Chrome Silicon wire which is a 1000x more memory than the standard 17-7 stainless wire. Load a magazine and these will last 20 years. Also have a zinc phosphate(parkerized) finish.No longer worry about water effects. No longer have to under load your mags…-$6.95 each. Quantity discounts available.
-Accuwedges for any AR-15/M16 Weapons System. $10.95a dozen.
-First Samco M33 Handguard w/2 picatinny rails and covers-$ 65.00
-First Samco M44 4-Sided Handguards –with rail covers-Full sized or Carbine-$109.95
-We take all major credit cards , Paypal , checks, money orders. Shipping and handling $5.50 and can be combined on multiple orders. Visit our site for many other items..
-Quantity orders contact at once!
-Any questions contact at once.
PO Box 134
Palenville ,NY 12463


A month ago, I interview Gary Illyes at Marketing Land and covered this bit at Search Engine Land but it got lost. In short, Gary Illyes from Google said that machine learning and artificial intelligence within the search algorithm can be used to make new ranking signals.
He said that Google can use it to say if you combine ranking signal A with ranking signal B, we can make a new ranking signal C that helps improve quality of the search results.
Here is that transcript bit:
Danny Sullivan: Yeah. What is it, what are you doing with machine learning? Like, so when you say it’s not being used in the core algorithm. So no one’s getting fired. The machines haven’t taken over the algorithm, you guys are still using an algorithm. You still have people trying to figure out the best way to process signals, and then what do you do with the machine learning; is [it] part of that?
Gary Illyes: They are typically used for coming up with new signals and signal aggregations. So basically, let’s say that this is a random example and not know if this is real, but let’s say that I would want to see if combining PageRank with Panda and whatever else, I don’t know, token frequency.
If combining those three in some way would result in better ranking, and for that for example, we could easily use machine learning. And then create the new composite signal. That would be one example.
The other example would be RankBrain, where… which re-ranks based on based on historical signals.
But that also is, if you, if you think about it, it’s also a composite signal.
It’s using several signals to come up with a new multiplier for the results that are already ranked by the core algorithm.
Here is the audio for that part of the interview:
Gary did not say if Google does do this now but said they can do this. Are they? What do you think?
Forum discussion at Twitter.
Go to Source
Author: firstname.lastname@example.org (Barry Schwartz)


You will be working alongside our Machine Learning Lead to further expand our algorithm creation and data modelling, building and operating large data sets and deploying solutions on AWS amongst many other things.
Jumping into an environment that always has the potential to expand, grow and incorporate changes as the datasets increase. If you love open parameters, can create and have vision – this is for you!
Ideally, you’ll bring over 3 years of experience in the ML field. Through either analysis work, previous results/failures, you’ll hopefully have put some ML models into production and know what it means to fail hard.
You’ll possess a solid understanding of Data Engineering & Data Cleaning, have a keen eye for detail skills in data quality, data cleansing and data validation.
You will also be very comfortable with scripting, working with Computer Vision and working with unstructured data (JSON).
- Python (ideally proficient in Numpy, Pandas & Multiprocessing / Multithreading)
- Computer Vision – OpenCV, Python Image Library (PIL/Pillow)
- SQL (Postgres) & NoSQL (Mongo)
- Tensorflow or Keras or Pytorch
- Jupyter Labs or Notebooks
- Sagemaker or AWS.
- Computer Science experience – Object-Oriented Programming, REST API / Comms, Unit / System and Black Box Testing.
Non-Essential (but desirable)
- Docker / Kubernetes
You will have completed a Computer Science degree with potentially either a Masters or PhD in Data Science.
What you’ll get in return:
Excellent working conditions with a collaborative, focused and social team.
You will be rewarded very well for your efforts and given all you need to succeed!


Stellar can be used to build sophisticated smart contracts. Smart contracts are computer programs that can automatically execute an agreement based on programmed logic.
The concept of integrating technology and legal contracts dates back to the 1950s when scholars built computational methods that could enforce legal rules without involving traditional legal processes. Smart contracts were formally defined by Nick Szabo in 1997:
Smart contracts combine protocols with user interfaces to formalize and secure relationships over computer networks. Objectives and principles for the design of these systems are derived from legal principles, economic theory, and theories of reliable and secure protocols.
In recent years, blockchain technology has enabled a new breed of smart contracts with immutable storage of agreement terms, cryptographic authorization, and integrated transfers of value.
For the Stellar Network, smart contracts are manifested as Stellar Smart Contracts. A Stellar Smart Contract (SSC) is expressed as compositions of transactions that are connected and executed
Original URL: http://feedproxy.google.com/~r/feedsapi/BwPx/~3/CwCb2N1gUL8/stellar-smart-contracts.html


13 April 2012
This show was released on Friday 13 April 2012; its running time is 00:47:19.
Segment 0 (00:35)
Bradley and Karen introduce Michael's talk.
Segment 1 (01:56)
Segment 2 (26:47)
- Bradley mentioned GNU Mediagoblin as an example of a true upstream multi-copyright-holder AGPLv3'd project. (28:10)
- Bradley mentioned that LibreOffice is “wealthy” as well by Michael Meeks standards, given their successful fundraisers. (29:38)
- Bradley mentioned the Desktop Summit panel that he and Michael were on and Karen moderated. (34:06)
- Bradley and Michael co-authored (with Vincent Untz) the GNOME Copyright Assignment Guidelines. (35:30)
- FSF was previously supportive of MySQL AB back in 2002, but Michael also used to support the Sun JCA. (38:20)


7 July, 2007
Flood of angst
With a very few isolated exceptions, I've never been a fan of computer games. However, a friend at work recently lent me 'Halo' to follow-up a conversation we'd been having.
It's enjoyable enough, I suppose, if repetitive, and once I'd mastered the control system I soon found myself drawn into finding the optimum tactics, angles, etc., though I still don't quite 'get' FPS games – I prefer something more strategic or, well, intellectually-challenging. Yet I also found it somewhat disturbing.
The dominant feeling I was left with after each session was immense loneliness (not something to which I'm generally prone). Almost by definition, the only other entities in the game world were enemies, and the only interractions via a gun or grenade. It's all so... well, it goes beyond 'cold' or 'sterile'; I received an impression of massive emptiness.
This was the standalone 'narrative campaign' version, of course; there's also the networked 'player vs. player' mode, which is apparently the source of the game's true longevity. Somehow I think that'd be worse. I don't want to kill my friends.


Little girl Alyona is in a shop to buy some copybooks for school. She study four subjects so she wants to have equal number of copybooks for each of the subjects. There are three types of copybook's packs in the shop: it is possible to buy one copybook for a rubles, a pack of two copybooks for b rubles, and a pack of three copybooks for c rubles. Alyona already has n copybooks.

What is the minimum amount of rubles she should pay to buy such number of copybooks k that n + k is divisible by 4? There are infinitely many packs of any type in the shop. Alyona can buy packs of different type in the same purchase.


The Rockafeller Habits come from an author named Verne Harnish (2002). He's more of the Peter Drucker School of helping hierarchy live with itself but has some very useful tips. Here you go:
1. Habits List
Springest.nl is definitely using OKRs and has a "BGAH" (big hairy audacious goal) and maybe daily standups. Ruben would be good to talk to here.
If you don't know it I recommend looking at something a VIISI employee (Marc-Peter) introduced me to which is running Holacracy with the "Eisenhower Matrix". It's very Stephen Covey and has helped our team on a weekly basis with our A over B over C prioritization for Lead Link Heuristics and standups.


After setting up the delivery controller and configuring storefront to allow the HTML5 Receiver it is finally time to add a desktop to the mix.
In this step by step article we will be adding a single desktop in “remote PC access mode”. this means that XenDesktop wont power manage the desktop and we wont be able to mass deploy it (its not a golden image).
This might sound a little disappointing but its good for the basics, if your setting up a lab environment you probably want it this way because its way more flexible and when you have your image the way you want it, you can always re add it with a differed configuration.
Lets get started.
We start by installing the XenDesktop VDI agent on the VM. In my setup this is a Widows 10 VM but you can use all supported versions (7 to 10 at this time) and even some Linux distro’s!
Now were able to select features, everyone wants to optimize performance so that will be an easy pick 😉 . Remote assistance is needed if we want to use the shadow functionality from Citrix Director. Real-Time audio kind of explains itself. Framehawk is new transport protocol optimized for low bandwidth WAN connections. In my case I want everything but Framehawk.
Now were done on the VDI side of things. We will continue the operation on the delivery controller with Citrix Studio.
For some strange reason I forgot to take a screenshot of the Summary page. Luckily the summery page displays no new information.


/*
   PowerShell Desired State Configuration for Linux

   Copyright (c) Microsoft Corporation

   All rights reserved.

   MIT License

   Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

   The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <MI.h>
#if !defined(_MSC_VER)
#include <common/linux/sal.h>
#endif
#include "strings.h"

#define MI_STR_ID_UNKNOWN_PRAGMA                    MI_STR(STR_ID_UNKNOWN_PRAGMA)
#define MI_STR_ID_CLASS_ALREADY_DEFINED        	    MI_STR(STR_ID_CLASS_ALREADY_DEFINED)
#define MI_STR_ID_UNDEFINED_SUPERCLASS        	    MI_STR(STR_ID_UNDEFINED_SUPERCLASS)
#define MI_STR_ID_CLASS_FEATURE_ALREADY_DEFINED     MI_STR(STR_ID_CLASS_FEATURE_ALREADY_DEFINED)
#define MI_STR_ID_DUPLICATE_QUALIFIER        	    MI_STR(STR_ID_DUPLICATE_QUALIFIER)
#define MI_STR_ID_UNDEFINED_QUALIFIER        	    MI_STR(STR_ID_UNDEFINED_QUALIFIER)
#define MI_STR_ID_MISSING_QUALIFIER_INITIALIZER     MI_STR(STR_ID_MISSING_QUALIFIER_INITIALIZER)
#define MI_STR_ID_INVALID_QUALIFIER_INITIALIZER     MI_STR(STR_ID_INVALID_QUALIFIER_INITIALIZER)
#define MI_STR_ID_INVALID_INITIALIZER        	    MI_STR(STR_ID_INVALID_INITIALIZER)
#define MI_STR_ID_UNDEFINED_CLASS        	    MI_STR(STR_ID_UNDEFINED_CLASS)
#define MI_STR_ID_IGNORED_INITIALIZER        	    MI_STR(STR_ID_IGNORED_INITIALIZER)
#define MI_STR_ID_PARAMETER_ALREADY_DEFINED         MI_STR(STR_ID_PARAMETER_ALREADY_DEFINED)
#define MI_STR_ID_ILLEGAL_ARRAY_SUBSCRIPT           MI_STR(STR_ID_ILLEGAL_ARRAY_SUBSCRIPT)
#define MI_STR_ID_INCOMPATIBLE_FLAVORS              MI_STR(STR_ID_INCOMPATIBLE_FLAVORS)
#define MI_STR_ID_INITIALIZER_OUT_OF_RANGE          MI_STR(STR_ID_INITIALIZER_OUT_OF_RANGE)
#define MI_STR_ID_INTERNAL_ERROR        	    MI_STR(STR_ID_INTERNAL_ERROR)
#define MI_STR_ID_QUALIFIER_ALREADY_DECLARED        MI_STR(STR_ID_QUALIFIER_ALREADY_DECLARED)
#define MI_STR_ID_WRONG_TYPE_FOR_QUALIFIER          MI_STR(STR_ID_WRONG_TYPE_FOR_QUALIFIER)
#define MI_STR_ID_OUT_OF_MEMORY        	    MI_STR(STR_ID_OUT_OF_MEMORY)
#define MI_STR_ID_ILLEGAL_QUALIFIER_OVERRIDE        MI_STR(STR_ID_ILLEGAL_QUALIFIER_OVERRIDE)
#define MI_STR_ID_KEY_MUTATION_ERROR        	    MI_STR(STR_ID_KEY_MUTATION_ERROR)
#define MI_STR_ID_KEY_TYPE_MUTATION_ERROR           MI_STR(STR_ID_KEY_TYPE_MUTATION_ERROR)
#define MI_STR_ID_KEY_STRUCTURE_MUTATION_ERROR      MI_STR(STR_ID_KEY_STRUCTURE_MUTATION_ERROR)
#define MI_STR_ID_UNKNOWN_QUALIFIER                 MI_STR(STR_ID_UNKNOWN_QUALIFIER)
#define MI_STR_ID_ILLEGAL_SCOPE_FOR_QUALIFIER       MI_STR(STR_ID_ILLEGAL_SCOPE_FOR_QUALIFIER)
#define MI_STR_ID_PROPERTY_CONSTRAINT_FAILURE       MI_STR(STR_ID_PROPERTY_CONSTRAINT_FAILURE)
#define MI_STR_ID_PROPERTY_QUALIFIER_INCOMPATIBLE   MI_STR(STR_ID_PROPERTY_QUALIFIER_INCOMPATIBLE)
#define MI_STR_ID_OVERRIDE_QUALIFIER_NAME_MISMATCH  MI_STR(STR_ID_OVERRIDE_QUALIFIER_NAME_MISMATCH)
#define MI_STR_ID_UNDEFINED_CLASS_IN_EMBEDDEDINSTANCE_QUALIFIER     MI_STR(STR_ID_UNDEFINED_CLASS_IN_EMBEDDEDINSTANCE_QUALIFIER)
#define MI_STR_ID_UNTERMINATED_STRING_LITERAL       MI_STR(STR_ID_UNTERMINATED_STRING_LITERAL)
#define MI_STR_ID_ILLEGAL_HEX_CHARACTER        	    MI_STR(STR_ID_ILLEGAL_HEX_CHARACTER)
#define MI_STR_ID_INTEGER_OVERFLOW        	    MI_STR(STR_ID_INTEGER_OVERFLOW)
#define MI_STR_ID_ILLEGAL_BINARY_LITERAL            MI_STR(STR_ID_ILLEGAL_BINARY_LITERAL)
#define MI_STR_ID_MOF_STACK_OVERFLOW        	    MI_STR(STR_ID_MOF_STACK_OVERFLOW)
#define MI_STR_ID_MOF_STACK_UNDERFLOW        	    MI_STR(STR_ID_MOF_STACK_UNDERFLOW)
#define MI_STR_ID_FAILED_TO_READ_INCLUDE_FILE       MI_STR(STR_ID_FAILED_TO_READ_INCLUDE_FILE)
#define MI_STR_ID_SYNTAX_ERROR                      MI_STR(STR_ID_SYNTAX_ERROR)
#define MI_STR_ID_PARSER_STACK_OVERFLOW             MI_STR(STR_ID_PARSER_STACK_OVERFLOW)
#define MI_STR_ID_STREAM_QUALIFIER_ON_NON_ARRAY     MI_STR(STR_ID_STREAM_QUALIFIER_ON_NON_ARRAY)
#define MI_STR_ID_STREAM_QUALIFIER_ON_NON_OUTPUT    MI_STR(STR_ID_STREAM_QUALIFIER_ON_NON_OUTPUT)
#define MI_STR_ID_UNDEFINED_PROPERTY                MI_STR(STR_ID_UNDEFINED_PROPERTY)
#define MI_STR_ID_ERROR_DETAILS                     MI_STR(STR_ID_ERROR_DETAILS)
#define MI_STR_ID_ERROR_DETAILS_INCLUDED_FILE       MI_STR(STR_ID_ERROR_DETAILS_INCLUDED_FILE)
#define MI_STR_ID_ERROR_DETAILS_CONTENT             MI_STR(STR_ID_ERROR_DETAILS_CONTENT)
#define MI_STR_ID_UNDEFINED_INSTANCE_ALIAS          MI_STR(STR_ID_UNDEFINED_INSTANCE_ALIAS)
#define MI_STR_ID_CONVERT_PROPERTY_VALUE_FAILED     MI_STR(STR_ID_CONVERT_PROPERTY_VALUE_FAILED)
#define MI_STR_ID_MI_CREATEINSTANCE_FAILED          MI_STR(STR_ID_MI_CREATEINSTANCE_FAILED)
#define MI_STR_ID_MI_SET_PROPERTY_FAILED            MI_STR(STR_ID_MI_SET_PROPERTY_FAILED)
#define MI_STR_ID_MI_ADD_PROPERTY_FAILED            MI_STR(STR_ID_MI_ADD_PROPERTY_FAILED)
#define MI_STR_ID_ALIAS_DECL_ALREADY_DEFINED        MI_STR(STR_ID_ALIAS_DECL_ALREADY_DEFINED)

#define MI_STR_ID_SYNTAX_ERROR_INVALID_ALIAS_DECL   MI_STR(STR_ID_SYNTAX_ERROR_INVALID_ALIAS_DECL)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_COMMENT      MI_STR(STR_ID_SYNTAX_ERROR_INVALID_COMMENT)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_TOKEN        MI_STR(STR_ID_SYNTAX_ERROR_INVALID_TOKEN)
#define MI_STR_ID_SYNTAX_ERROR_INCOMPLETE_STRING_VALUE  MI_STR(STR_ID_SYNTAX_ERROR_INCOMPLETE_STRING_VALUE)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_CHAR16_VALUE     MI_STR(STR_ID_SYNTAX_ERROR_INVALID_CHAR16_VALUE)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR16_VALUE     MI_STR(STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR16_VALUE)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR     MI_STR(STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR)
#define MI_STR_ID_SYNTAX_ERROR_INCOMPLETE_ESCAPED_CHAR16_VALUE  MI_STR(STR_ID_SYNTAX_ERROR_INCOMPLETE_ESCAPED_CHAR16_VALUE)
#define MI_STR_ID_SYNTAX_ERROR_INVALID_NUMBER_VALUE     MI_STR(STR_ID_SYNTAX_ERROR_INVALID_NUMBER_VALUE)

#define MI_STR_ID_CREATE_PARSER_FAILED              MI_STR(STR_ID_CREATE_PARSER_FAILED)

#define MI_STR_ID_PARAMETER_INVALID_OPTIONS_VALUE              MI_STR(STR_ID_PARAMETER_INVALID_OPTIONS_VALUE)
#define MI_STR_ID_PARAMETER_INVALID_VALUE_STRING               MI_STR(STR_ID_PARAMETER_INVALID_VALUE_STRING)
#define MI_STR_ID_PARAMETER_INVALID_VALUE_NULL                 MI_STR(STR_ID_PARAMETER_INVALID_VALUE_NULL)
#define MI_STR_ID_PARAMETER_INVALID_VALUE_UNEXPECTED_INTEGER   MI_STR(STR_ID_PARAMETER_INVALID_VALUE_UNEXPECTED_INTEGER)
#define MI_STR_ID_PARAMETER_INVALID_VALUE_OUT_OF_RANGE_INTEGER MI_STR(STR_ID_PARAMETER_INVALID_VALUE_OUT_OF_RANGE_INTEGER)
#define MI_STR_ID_PARAMETER_INVALID_BUFFER                     MI_STR(STR_ID_PARAMETER_INVALID_BUFFER)

#define MI_STR_ID_MI_CREATECLASS_FAILED             MI_STR(STR_ID_MI_CREATECLASS_FAILED)

#define MI_STR_ID_PARAMETER_UNEXPECTED_RESULTCLASSCOUNT        MI_STR(STR_ID_PARAMETER_UNEXPECTED_RESULTCLASSCOUNT)
#define MI_STR_ID_PARAMETER_UNEXPECTED_RESULTINSTANCECOUNT     MI_STR(STR_ID_PARAMETER_UNEXPECTED_RESULTINSTANCECOUNT)

#define MI_STR_ID_INVALID_EMBEDDEDPROPERTYVALUE_WRONG_TYPE     MI_STR(STR_ID_INVALID_EMBEDDEDPROPERTYVALUE_WRONG_TYPE)

#define MI_STR_ID_INITIALIZER_OUT_OF_RANGE_DATETIMEVALUE       MI_STR(STR_ID_INITIALIZER_OUT_OF_RANGE_DATETIMEVALUE)

MI_CONST MI_Char * cSTRS[]=
{
    MI_STR_ID_UNKNOWN_PRAGMA,
    MI_STR_ID_CLASS_ALREADY_DEFINED,
    MI_STR_ID_UNDEFINED_SUPERCLASS,
    MI_STR_ID_CLASS_FEATURE_ALREADY_DEFINED,
    MI_STR_ID_DUPLICATE_QUALIFIER,
    MI_STR_ID_UNDEFINED_QUALIFIER,
    MI_STR_ID_MISSING_QUALIFIER_INITIALIZER,
    MI_STR_ID_INVALID_QUALIFIER_INITIALIZER,
    MI_STR_ID_INVALID_INITIALIZER,
    MI_STR_ID_UNDEFINED_CLASS,
    MI_STR_ID_IGNORED_INITIALIZER,
    MI_STR_ID_PARAMETER_ALREADY_DEFINED,
    MI_STR_ID_ILLEGAL_ARRAY_SUBSCRIPT,
    MI_STR_ID_INCOMPATIBLE_FLAVORS,
    MI_STR_ID_INITIALIZER_OUT_OF_RANGE,
    MI_STR_ID_INTERNAL_ERROR,
    MI_STR_ID_QUALIFIER_ALREADY_DECLARED,
    MI_STR_ID_WRONG_TYPE_FOR_QUALIFIER,
    MI_STR_ID_OUT_OF_MEMORY,
    MI_STR_ID_ILLEGAL_QUALIFIER_OVERRIDE,
    MI_STR_ID_KEY_MUTATION_ERROR,
    MI_STR_ID_KEY_TYPE_MUTATION_ERROR,
    MI_STR_ID_KEY_STRUCTURE_MUTATION_ERROR,
    MI_STR_ID_UNKNOWN_QUALIFIER,
    MI_STR_ID_ILLEGAL_SCOPE_FOR_QUALIFIER,
    MI_STR_ID_PROPERTY_CONSTRAINT_FAILURE,
    MI_STR_ID_PROPERTY_QUALIFIER_INCOMPATIBLE,
    MI_STR_ID_OVERRIDE_QUALIFIER_NAME_MISMATCH,
    MI_STR_ID_UNDEFINED_CLASS_IN_EMBEDDEDINSTANCE_QUALIFIER,
    MI_STR_ID_UNTERMINATED_STRING_LITERAL,
    MI_STR_ID_ILLEGAL_HEX_CHARACTER,
    MI_STR_ID_INTEGER_OVERFLOW,
    MI_STR_ID_ILLEGAL_BINARY_LITERAL,
    MI_STR_ID_MOF_STACK_OVERFLOW,
    MI_STR_ID_MOF_STACK_UNDERFLOW,
    MI_STR_ID_FAILED_TO_READ_INCLUDE_FILE,
    MI_STR_ID_SYNTAX_ERROR,
    MI_STR_ID_PARSER_STACK_OVERFLOW,
    MI_STR_ID_STREAM_QUALIFIER_ON_NON_ARRAY,
    MI_STR_ID_STREAM_QUALIFIER_ON_NON_OUTPUT,
    MI_STR_ID_UNDEFINED_PROPERTY,
    MI_STR_ID_ERROR_DETAILS,
    MI_STR_ID_ERROR_DETAILS_INCLUDED_FILE,
    MI_STR_ID_ERROR_DETAILS_CONTENT,
    MI_STR_ID_UNDEFINED_INSTANCE_ALIAS,
    MI_STR_ID_CONVERT_PROPERTY_VALUE_FAILED,
    MI_STR_ID_MI_CREATEINSTANCE_FAILED,
    MI_STR_ID_MI_SET_PROPERTY_FAILED,
    MI_STR_ID_MI_ADD_PROPERTY_FAILED,
    MI_STR_ID_ALIAS_DECL_ALREADY_DEFINED,

    MI_STR_ID_SYNTAX_ERROR_INVALID_ALIAS_DECL,
    MI_STR_ID_SYNTAX_ERROR_INVALID_COMMENT,
    MI_STR_ID_SYNTAX_ERROR_INVALID_TOKEN,
    MI_STR_ID_SYNTAX_ERROR_INCOMPLETE_STRING_VALUE,
    MI_STR_ID_SYNTAX_ERROR_INVALID_CHAR16_VALUE,
    MI_STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR16_VALUE,
    MI_STR_ID_SYNTAX_ERROR_INVALID_ESCAPED_CHAR,
    MI_STR_ID_SYNTAX_ERROR_INCOMPLETE_ESCAPED_CHAR16_VALUE,
    MI_STR_ID_SYNTAX_ERROR_INVALID_NUMBER_VALUE,

    MI_STR_ID_CREATE_PARSER_FAILED,

    MI_STR_ID_PARAMETER_INVALID_OPTIONS_VALUE,
    MI_STR_ID_PARAMETER_INVALID_VALUE_STRING,
    MI_STR_ID_PARAMETER_INVALID_VALUE_NULL,
    MI_STR_ID_PARAMETER_INVALID_VALUE_UNEXPECTED_INTEGER,
    MI_STR_ID_PARAMETER_INVALID_VALUE_OUT_OF_RANGE_INTEGER,
    MI_STR_ID_PARAMETER_INVALID_BUFFER,

    MI_STR_ID_MI_CREATECLASS_FAILED,

    MI_STR_ID_PARAMETER_UNEXPECTED_RESULTCLASSCOUNT,
    MI_STR_ID_PARAMETER_UNEXPECTED_RESULTINSTANCECOUNT,

    MI_STR_ID_INVALID_EMBEDDEDPROPERTYVALUE_WRONG_TYPE,
    MI_STR_ID_INITIALIZER_OUT_OF_RANGE_DATETIMEVALUE,
};

MI_CONST size_t cSTRSLength = sizeof(cSTRS) / sizeof(cSTRS[0]);

/******************************************************************************
 * Load string
 *****************************************************************************/
MI_Char* GetString(MI_Uint32 id)
{
    if (id < cSTRSLength)
    {
        return cSTRS[id];
    }
    return NULL;
}

#if defined (_MSC_VER) && defined(CONFIG_ENABLE_WCHAR)

#include <windows.h>

extern HMODULE g_hModule;

MI_Char* LookupLocalizedString(
    MI_Uint32 id,
    _Out_writes_z_(len) MI_Char *buffer,
    size_t len)
{
    DWORD dwRet = LoadStringW(
        g_hModule,
        (DWORD)id,
        buffer,
        (int)len);
    if (dwRet >= len || dwRet == 0)
    {
        return GetString(id);
    }
    return buffer;
}
#endif

_Post_z_ MI_Char* mof_LookupString(
    MI_Uint32 id,
    _Out_writes_z_(len) MI_Char *buffer,
    size_t len)
{
#if defined (_MSC_VER) && defined(CONFIG_ENABLE_WCHAR)
    /* Assume windows platform always build with WCHAR */
    return LookupLocalizedString(id, buffer, len);
#else
    MI_UNREFERENCED_PARAMETER(len);
    buffer[0] = 0;
    return GetString(id);
#endif
}


Ipage.com Web Hosting
Web hosting service is a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web. The web hosts are companies that provide space on a server owned or leased for use by clients, as well as providing Internet connectivity, typically in a data center.
ipage.com is one of those type of Internet hosting service or Web hosting service.
They give The iPage Essential Plan it is On Sale Now: $1.89/month.
- Unlimited hosting space
- Unlimited data transfer
- Host unlimited domains
- Free domain registration
- Free SiteLock security suite
- Free point & click site builder
- Free online store
- Free blog
- Free script library
- Good Support Service
- Outstanding reliability
- Marketing Tools
And many more.
Also another plan VPS Servers. High-Performance Hosting.
It includes some feature like Increased Control, Semi-Private Resources, Cloud-Based Flexibility, World Class Support. implements are – Easy-to-use cPanel included, Optional root access, Fully managed support included, High performance at affordable prices, Guaranteed memory, High-speed mirrored SAN storage, Room to grow and scale as demands increase, Instant provisioning of resources, Seamless migration options, 24×7 expert support via phone, chat or email, Predictable monthly costs — no “sticker shock”, Money-Back Guarantee . It costs regularly $24.99/month.
One last plan is Dedicated Servers. Powerful Solutions.
It includes some feature like Independent Control, Dedicated Resources, Cloud-Based Flexibility, Pricing & Predictability.
These implements are some like Ability to install applications without restrictions, Fully managed support included, Easy-to-use cPanel and optional root access, Faster operating speeds for high traffic sites, Extensive security and mirrored storage for advanced data protection, Maximum performance unaffected by other users, Room to grow and scale as demands increase, Instant provisioning of resources, Seamless migration options, Scalable resources and payment term options, Predictable monthly costs — no “sticker shock”, No overage charges for surpassing limits.
Why we should use ipage.com, many web hosts seem pretty much the same … All appear to have unlimited disk space, bandwidth and email, plus 24×7 support and site builders. But the reality is there are differences and they are important! That’s why we’ve created this handy comparison chart—it shows you the differences so you can choose the best web host for your needs.
Anyone can also feature like needs to evaluate the requirements of the application to choose what kind of hosting to use. Such considerations include database server software, scripting software, and operating system. Most hosting providers provide Linux-based web hosting which offers a wide range of different software. A typical configuration for a Linux server is the LAMP platform: Linux, Apache, MySQL, and PHP/Perl/Python. The web hosting client may want to have other services, such as email for their business domain, databases or multimedia services. A customer may also choose Windows as the hosting platform. The customer still can choose from PHP, Perl, and Python but may also use ASP .Net or Classic ASP. Web hosting packages often include a Web Content Management System, so the end-user does not have to worry about the more technical aspects.
So it’s your turn to choose what is best for you.
Thanks for reading my post related to ipage.com webhost.
Please post your comments and suggestions about this post that how much you like it
Categories: Web Hosting


I’m delighted to say that you can now edit multiple images sequentially via photos.google.com.
Just open up an image, click the pencil icon, make your edits, and then use left/right arrow keys to move among images. (Previously you had to keep hitting Save, exiting the editor, navigating, and re-entering the editor.) This is a much, much faster way to move among images, apply Auto Enhance, and make other tweaks. You can also now choose among new aspect ratios when cropping.
More refinements are on the way, so check it out and let us know what you think!


Integrate files from Oracle Database to Oracle UCM Cloud
In this tutorial, we're about to unveil an ingenious solution for efficiently transferring various files from your database to the UCM (Universal Cloud Management) platform. We'll be zipping those files to ensure a smooth and secure transfer. We explore the step-by-step process of selecting, compressing, and seamlessly transferring data to the cloud. By the end of this tutorial, you'll have a solid grasp of this smart technique that can enhance your data management and cloud storage practices.


One piece in high quality Black Lycra, leopard lining, Eye printed, leopard straps.
Our favorit flattering style!
Removable padding with elastic strpa inside for shape and support!
Put it on and just fall in love with yourself...
The style is not high cut, the model is very tall..


You have probably registered on Internet sites many times. And each time you should enter your invented password. Usually the registration form automatically checks the password's crypt resistance. If the user's password isn't complex enough, a message is displayed. Today your task is to implement such an automatic check.

Web-developers of the company Q assume that a password is complex enough, if it meets all of the following conditions:

- the password length is at least 5 characters;
- the password contains at least one large English letter;
- the password contains at least one small English letter;
- the password contains at least one digit.

You are given a password. Please implement the automatic check of its complexity for company Q.


#pragma once

/********************************************************************/
// INCLUDES
/********************************************************************/
#define NOMINMAX
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#ifndef UNICODE
#define UNICODE
#endif

#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <stdint.h>
#include <assert.h>

#include <algorithm>
#include <string>
#include <list>
#include <vector>
#include <queue>
#include <map>

//#include "..\3rdParty\tinyxml2\tinyxml2.h"

/********************************************************************/
// DEFINES
/********************************************************************/
#define RIALIGN( x, a ) ( ( ( x ) + ((a)-1) ) & ~((a)-1) )

#define SAFE_DELETE(a)			if( (a) != NULL ) delete (a); (a) = NULL;
#define SAFE_DELETE_ARRAY(a)	if( (a) != NULL ) delete[] (a); (a) = NULL;
#define SAFE_RELEASE(a)			if( (a) != NULL ) (a)->Release(); (a) = NULL;

// Exporting defines
#ifdef RI_EXPORTS
#define RI_EXPORT __declspec(dllexport)
#else
#define RI_EXPORT __declspec(dllimport)
#endif

/********************************************************************/
// MEMORYLEAK LOGGER
/********************************************************************/
#ifdef _DEBUG
#pragma comment(lib, "vld.lib")
#include <vld.h>
#endif

#include <crtdbg.h>
#ifdef _DEBUG
#	define rnew new(_NORMAL_BLOCK,__FILE__, __LINE__)
#else
#	define rnew new
#endif
// =================== //

/********************************************************************/
// TYPE DEFINITIONS
/********************************************************************/
typedef uint8_t  U8;
typedef int8_t   I8;
typedef uint16_t U16;
typedef int16_t  I16;
typedef uint32_t U32;
typedef int32_t  I32;
typedef uint64_t U64;
typedef int64_t  I64;

////////////////////////////////////////////////////////////
/// \brief Classes that privately derive from this one can't be copied
///
////////////////////////////////////////////////////////////
class RI_EXPORT UnCopyable {
protected:
	UnCopyable() {}

private:
	UnCopyable(const UnCopyable &rhs);
	UnCopyable& operator=(const UnCopyable &rhs);
};

/********************************************************************/
// POST GLOBAL INCLUDES
/********************************************************************/
#include "RIMath.h"
/*
#include "RIColor.h"
#include "RIMath.h"
#include "RIVec.h"
#include "RIMatrix.h"
*/


Jordan x Travis Scott 'Cactus Jack' Suede Shorts Olive (2019)
Running Bare Stop Traffic Crop
Running Bare Stop Traffic Action Back Crop
Caroline Wozniacki Underwear Microfibre Bra
Supreme Big Letter Water Short Orange (SS20)
© 2020 www.coigachrun.com All Rights Reserved.


The best way to find all versions of a particular file preserved in Snapshot copies is to use the ls command from an NFS client.
Client must be connected to NFS to access the Snapshot copies.
ls -l myfile.txt .snapshot/*/myfile.txt -rw-r--r-- 1 smith 0 Jan 14 09:40 myfile.txt -rw-r--r-- 1 smith 0 Jan 13 18:39 .snapshot/nightly.0/myfile.txt -rw-r--r-- 1 smith 0 Jan 12 19:17 .snapshot/nightly.1/myfile.txtThe version of myfile.txt in the active file system was last modified on January 14, but the old versions available in the Snapshot copies were modified on January 13 and January 12. You can use standard UNIX commands to read the earlier versions of myfile.txt. However, you cannot modify or delete these older versions because everything in the .snapshot directory is read-only.


Allen is hosting a formal dinner party. $$$2n$$$ people come to the event in $$$n$$$ pairs (couples). After a night of fun, Allen wants to line everyone up for a final picture. The $$$2n$$$ people line up, but Allen doesn't like the ordering. Allen prefers if each pair occupies adjacent positions in the line, as this makes the picture more aesthetic.

Help Allen find the minimum number of swaps of adjacent positions he must perform to make it so that each couple occupies adjacent positions in the line.


ASI Gamepad is a MicroManager plugin that adds support for an XBox Gamepad. It lets users assign device properties to thumb sticks and Beanshell scripts to button presses.
The controller/gamepad isn't added thru the hardware config wizard , instead the plugin when launched looks for it. Then it displays the message “GamePad:NOT Found”,“..FOUND”,“..Connecting” and “..Error Connecting” accordingly.
A good guide on pairing your xbox Gamepad to PC is here
If you already have the gamepad paired, press the HOME button. The button lights up, blinks a few times and once its connected to the PC it glows solid. Moments later the plugin will update the status to “GamePad:Found”
The button and joystick assignments aren't automatically saved by the plugin between session , so use these buttons to save and load all thumb stick and button assignments.
Axes are analog controls on the gamepad.
Using the axis assignment table user can pick a device and device property that is adjusted when the axis is moved.
A common use of these controls is to move a stage. For this assign the axis to a stage's vector move property. In the case of an ASI's XYstage the property “VectorMoveX-VE(mm/s)” and “VectorMoveY-VE(mm/s)” are appropriate. They accept input in mm/sec and typical max value for the property is 4-5mm/sec. So here the multiplier column comes handy, when a multiplier of 3 is picked. Then the thumbstick deflection which varies from +1 to -1 , turns into +3 to -3 , and when applied to the device property , the stage will move +3 mm/sec to -3 mm/sec.
Unlike the axes controls, buttons have only two states, pressed or unpressed. The Action column of the Button assignment table lets user pick from a list of predefined actions (like Snap, Live view toggle etc) or “Run_Beanshell_script” to specify a beanshell script to be run on the button press. The path to the script is specified with the 3rd column. Clicking on it displays a File Chooser dialog box and user can navigate and pick the script to run.
A common way to setup the DPAD would be to move a stage on presses. For this make 4 different beanshell scripts with the following codes
gui.setRelativeXYStagePosition(X# in um,Y# in um); each with a different move and assign them to the DPAD buttons like this:
For example scripts click here


Intel has launched an 'Education Help Guide' – an interactive, step-by-step tutorial for students to assist students to make best use of technology. The guide aims to enable students to make better use of technology, an essential skill as they progress on their journey towards being the next generation of innovators.
The guide is a tutorial for Microsoft Office software that is user-friendly and uses non-technical language. The resource includes instruction for everything from making a bar chart from spreadsheet data; to setting up a three-column template for a document; to adding photos and videos to a presentation.
Click here to access the Help Guide in your local language


There are $$$n$$$ points on a plane. The $$$i$$$-th point has coordinates $$$(x_i, y_i)$$$. You have two horizontal platforms, both of length $$$k$$$. Each platform can be placed anywhere on a plane but it should be placed horizontally (on the same $$$y$$$-coordinate) and have integer borders. If the left border of the platform is $$$(x, y)$$$ then the right border is $$$(x + k, y)$$$ and all points between borders (including borders) belong to the platform.

Note that platforms can share common points (overlap) and it is not necessary to place both platforms on the same $$$y$$$-coordinate.

When you place both platforms on a plane, all points start falling down decreasing their $$$y$$$-coordinate. If a point collides with some platform at some moment, the point stops and is saved. Points which never collide with any platform are lost.

Your task is to find the maximum number of points you can save if you place both platforms optimally.

You have to answer $$$t$$$ independent test cases.

For better understanding, please read the Note section below to see a picture for the first test case.